В моем проекте у меня есть форма Django, которая состоит из ImageField и CharField . Я передаю эту форму своему шаблону и отображаю ее. В форме я установил атрибут method на POST . На мой взгляд, я обрабатываю этот запрос и возвращаю перенаправление в ответ.
Однако form.is_valid()
возвращает False
на мой взгляд, и я печатаю ошибки форм в консоли.
Вот ошибка, возвращаемая из form.errors
:
<ul class="errorlist"><li>image<ul class="errorlist"><li>This field is required.</li></ul></li></ul>
Это говорит о том, что мое поле ввода ImageField пусто, однако я определенно выбираю файл для ImageField в браузере, поэтому я не знаю причину, почему он говорит, что поле ввода пустое. Мой код ниже.
forms.py:
class CreatePost(forms.Form):
// The field that is not being assigned a file
image = forms.ImageField(allow_empty_file=False, required=True, widget=forms.FileInput(attrs={'id': 'image'}))
description = forms.CharField(max_length=100, required=False, widget=forms.TextInput(attrs={'placeholder': 'Add a caption:', 'id': 'description'}))
views.py :
def create(request):
context = {}
if request.method == "POST":
form = CreatePost(request.POST)
if form.is_valid():
print("YES")
return redirect('home')
else:
print(form.errors)
context['error'] = 'Please enter valid form data'
else:
form = CreatePost()
context['form'] = form
return render(request, 'create.html', context)
Шаблон :
<form action="{% url 'create' %}" method="POST">
{% csrf_token %}
{% for field in form %}
{{ field }}
<br>
{% endfor %}
<button class="createBtn btn btn-primary" type="submit">Post</button>
</form>
Кто-нибудь знает проблему здесь? Спасибо.