2017-01-03 198 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

相關問題