Форма 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 для того же представления, которое отправило форму, или любого другого представления.