【发布时间】:2019-08-16 06:57:06
【问题描述】:
我有一个没有关联模型的表单,只是一个用于发送消息的联系表单。
我现在对 django 表单有一些经验,所以我认为我做的一切都是正确的,但是当在浏览器中查看页面时根本没有渲染,也没有任何错误需要解决。
我的forms.py:
from django import forms
class ContactForm(forms.Form):
class Meta:
fields = ['full_name', 'phone', 'email', 'message']
full_name = forms.CharField(max_length=20)
phone = forms.CharField(max_length=20)
email = forms.CharField(max_length=30)
message = forms.CharField(max_length=400)
我的观点是将表单变成有用的东西:
def contact_view(request):
full_name = request.POST.get('full_name', False)
phone = request.POST.get('phone', False)
email = request.POST.get('email', False)
message = request.POST.get('message', False)
form = ContactForm()
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
# send_emails(first_name, last_name, email)
template = loader.get_template('/myapp/mysite/main_page/templates/main_page/thankyoumsg.html')
return HttpResponse(template.render({}, request))
template = loader.get_template('/myapp/mysite/main_page/templates/main_page/contact.html')
return HttpResponse(template.render({}, request))
还有我的模板:
<form class="leave-comment" action="." method="post">
{% csrf_token %}
{{form.as_p}}
<button type="submit">Submit</button>
</form>
但是什么都没有显示,我不确定为什么。我该如何解决这个问题?
【问题讨论】:
-
视图看起来有点粗略,因为
if form.is_valid():很可能会生成True,即使没有发布表单。如果您缩进if form.is_valid():-part 以包含在if request.method == 'POST':中会发生什么? -
@Johan 说得很好,谢谢。按照您的建议缩进,但没有任何改变:\
-
如果不出意外,请尝试在模板中打印任何文本(
thankyoumsg.html和contact.html)并查看显示的页面。另外,如果你查看页面源码,是否可以看到提交按钮等其他表单组件? -
@johan contact.html 显示正常,我无法提交表单来测试thankyoumsg.html。查看源代码是我尝试的第一件事,是的,提交按钮和打开的表单标签都在那里,只是没有任何字段。
标签: django django-forms django-templates django-views