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>
Вернуться на верх