Форма Django не отображается при импорте в html

Пытаюсь импортировать форму Django в html-шаблон, но она не отображается, и ничего здесь не помогает. Мне кажется, что я исчерпал все решения на этом сайте и ничего. Есть идеи?

views.py

def saveFileUpload(request):
    context = {}
    if request.method == 'POST':
        capturedForm = UploadFileForm(request.POST or None, request.FILES or None)
        if capturedForm.is_valid():
            capturedForm.save()
        else:
            capturedForm = UploadFileForm()
        context['form'] = capturedForm
        return render(request, 'fileupload.html', context)

forms.py

class UploadFileForm(forms.ModelForm):
    class Meta:
        model = Project
        fields = "__all__"

fileupload.html

<html>
    <body>
    <form enctype="multipart/form-data" action="" method="post">{%  csrf_token %}
        {{ form.as_table }}
        <input type="submit" value="Save">
    </form>
    </body>
</html>

Если вы не включили весь код для представления saveFileUpload, то нечего отображать, если ваш request.method не не равен POST. Вот более чистый способ сделать все, что вам нужно:

def saveFileUpload(request):
    capturedForm = UploadFileForm(request.POST or None, request.FILES or None)
    if capturedForm.is_valid():
        capturedForm.save()
        return redirect('a-view-to-redirect-to')
    context['form'] = capturedForm
    return render(request, 'fileupload.html', context)

Вам не понадобится

else:
    capturedForm = UploadFileForm()

или

if request.method == 'POST':

поскольку вы уже определили

capturedForm = UploadFileForm(request.POST or None, request.FILES or None)

Это означает, что если это NOT POST запрос, то в качестве capturedForm будет None вместо request.POST.

Теперь return redirect('a-view-to-redirect-to') может быть именем пути url, определенным в вашем urls.py для того же представления, которое отправило форму, или любого другого представления.

Вернуться на верх