Django,表单未在模板中呈现
Posted
技术标签:
【中文标题】Django,表单未在模板中呈现【英文标题】:Django, form not rendering in the template 【发布时间】:2020-02-05 21:39:52 【问题描述】:表单未在模板中呈现。
这个视图没有模型,我知道,这是一个散列序列号的快速工具。因此,我使用的是 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>
我已经按照文档走了这么远,但我一定是复制了错误的东西,并且在谷歌上找不到任何东西,所以我怀疑在这个极其罕见的情况下,这是第一次发生这种情况。
【问题讨论】:
【参考方案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)
【讨论】:
谢谢,准时! 是的,谢谢,确实如此,我现在只需要弄清楚如何将我的回复回复给用户。以上是关于Django,表单未在模板中呈现的主要内容,如果未能解决你的问题,请参考以下文章
Django 联系电子邮件表单未在模板 home.html 中呈现/显示