表单未在模板中呈现。
此视图没有模型,我知道,这是哈希序列号的快速工具。结果,我使用的是form.Forms,而不是ModelForms。因此,无需经历从头开始创建表单的繁琐过程,而是在使用合理的表单将其添加到当前站点的同时,但我无法将其呈现,但实际上却很简单,它具有两个字段和一个提交按钮。由于某些原因,表单字段未显示,但提交按钮显示。
表格
class VoiceSearchForm(forms.Form):
hw_number = forms.CharField(max_length=6)
ca_serial = forms.CharField(max_length=16)
视图
def voice_search_view(request):
form = VoiceSearchForm(request.POST)
if request.method == 'POST':
form = VoiceSearchForm()
if form.is_valid():
hw_number = form.cleaned_data['hw_number']
ca_serial = form.cleaned_data['ca_serial']
# Do stuff with the data collected.
return render(request, 'voice_search.html', {})
模板
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Voice Search</title>
</head>
<body>
<h1>Hashing tool</h1>
<form action="." class="voice_search"method="POST">
{{ form.as_p }}
{% csrf_token %}
<input type="submit" class="btn" value="Submit">
</form>
</body>
</html>
我已经按照文档进行了深入了解,但是我肯定已经复制了错误的内容,因此在Google上找不到任何内容,因此我怀疑在这种极为罕见的情况下,这是第一次发生这种情况。
答案 0 :(得分:1)
您需要将表单作为上下文传递,才能在模板中使用它。 在您看来,请更改以下内容:
return render(request, 'voice_search.html', {})
对此:
return render(request, 'voice_search.html', {'form': form})
您可能还会考虑使用名为form view的基于类的通用视图。
在您的情况下,它看起来像(未经测试):
from django.views.generic.edit import FormView
class VoiceSearchView(FormView):
template_name = 'voice_search.html'
form_class = VoiceSearchForm
def form_valid(self, form):
hw_number = form.cleaned_data['hw_number']
ca_serial = form.cleaned_data['ca_serial']
return super().form_valid(form)