Python Django Форма "Это поле обязательно для заполнения"
Я сделал форму в django с одним обязательным полем (imagefield), но когда я заполняю его, выбирая изображение, после заполнения форма считает, что форма не действительна и просит заполнить ее снова, я не понимаю почему, вот мой код ниже:
view.py:
def success(request):
return HttpResponse('successfully uploaded')
def contact(request, plage_name):
name = plage_name
plage = Spot.objects.get(name__iexact=name)
if request.method == 'POST':
form = ContactUsForm(request.FILES) # ajout d’un nouveau formulaire ici
if form.is_valid():
print("it's valide")
plage.photo = form.cleaned_data['photo']
plage.save()
return redirect('success')
else:
form = ContactUsForm()
return render(request,
'pages/Testform.html',
{'form': form}) # passe ce formulaire au gabarit
form.py
class ContactUsForm(forms.Form):
photo = forms.ImageField(required=True)
html
<form action="" method="post" novalidate>
{% csrf_token %}
{{ form }}
<input type="submit" value="Envoyer">
</form>
Url.py
urlpatterns = [
path('contact-us/<path:plage_name>', views.contact, name='contact'),
]
Я думаю, что ваша ошибка заключается в параметрах формы init. Первый параметр предназначен для данных POST, а не FILES:
form = ContactUsForm(request.POST, request.FILES)
После этого нужно вызвать form.save(), наверное, это лучше, чем делать обновление самостоятельно...
в файле views.py
if request.method == 'POST':
form = ContactUsForm(request.POST,request.FILES)
в HTML
<form action="" method="post" novalidate enctype="multipart/form-data">
{% csrf_token %}
{{ form }}
<input type="submit" value="Envoyer">
</form>