2017-01-03 95 views
-1

我在django中创建联系表单发送电子邮件,但表单不显示在网页上。我认为这个问题可能是因为表单对象可能从来没有被正确地传递给上下文,但我不知道它出错的地方。下面的代码是我到目前为止。我的表单不显示字段,我不知道为什么

from .forms import * 

我的视图

def email(request): 
    form = ContactForm() 
    if request.method == 'POST': 
     form = ContactForm(request.POST) 
     if form.is_valid(): 
      subject = form.cleaned_data['subject'] 
      email = form.cleaned_data['email'] 
      first_name = form.cleaned_data['first_name'] 
      message = form.cleaned_data['message'] 
      try: 
       send_mail(first_name + ": " + subject, message, email, 
          ['[email protected]']) 
      except BadHeaderError: 
       return HttpResponse("Invalid Header.") 
      return redirect('thankyou') 
    return render(request, 'Index-App/contact.html', {'form': form}) 

我的Form类

class ContactForm(forms.Form): 
    subject = forms.CharField(required=True) 
    from_email = forms.EmailField(required=True) 
    first_name = forms.CharField(max_length=200, required=True) 
    message = forms.CharField(widget=forms.Textarea) 

的url

url(r'^contact/$', views.email, name='contact'), 

我的模板

{% block contact %} 
    <form method="POST" action="{% url 'Index-App:contact' %}"> 
     {% csrf_token %} 
     {{ form }} 
    <input type="submit" class="btn-success" value="Send"/> 
    </form> 
    {% endblock %} 
+0

我犯了一个错误,第二个跟本来应该的ContactForm() – melb27

回答

4

因为你没有实例化表单时,方法是GET。此外,您需要更改self参数去request

尝试以下操作:

​​
+0

这没有工作,它不作出任何意义为什么。 – melb27

+0

@ melb27而不是'email(self)'使用'email(request)'。你准确得到哪个错误? – ettanany

+0

表单字段不显示。输入电子邮件等字段。它只显示发送按钮。是否有另一种方法可以让表单发送一封可以显示给我的联系人电子邮件?我实际上已经在这几天了。 – melb27

相关问题