【发布时间】:2014-03-20 04:33:16
【问题描述】:
我正在尝试制作 django 教程中的联系表格,但不幸的是,该表格没有显示为 {{ form }}。唯一出现的是提交按钮。您可以在下面找到代码:
forms.py
from django import forms
# Create your forms here.
class ContactForm(forms.Form):
name = forms.CharField()
email = forms.EmailField()
message = forms.CharField(widget=forms.Textarea)
views.py
from django.shortcuts import render
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.core.mail import send_mail
from contact.forms import ContactForm
# Create your views here.
def contact(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
name = form.cleaned_data['name']
email = form.cleaned_data['email']
message = form.cleaned_data['message']
recipients = ['myemail@outlook.com']
send_mail(name, email, message, recipients)
return HttpResponseRedirect(reverse('contact-thanks'))
else:
form = ContactForm()
return render(request, 'contact/contact-form.html', {
'form': form,
})
contact-form.html
<form action="/contact/" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
【问题讨论】:
-
这意味着您的视图仅适用于呈现 html 页面但没有 'from' ,所以现在您应该测试一些东西,return render(request, 'contact/contact-form.html', { 'form ': form,'test':'this is for testing purpose', }) and in your html page print {{test}}
-
好像你的表单没有初始化。尝试
form = ContactForm(),然后尝试if request.method不带else的部分,看看效果如何。 -
@hizbul25 仍然没有显示“这是用于测试目的”!
-
@sagarchalise 发生同样的事情,表单不显示。
-
也许我的 urls.py @hizbul25 有问题?
url(r'^$', TemplateView.as_view(template_name='contact/contact-form.html'), name="contact")