2012-07-18 41 views
1

我已經開始使用Django表單,因爲不久以前。我一直在通過寫作讓自己的表格產生自我:表格不是由模板生成的

{{ test_form.as_p }} 

哪些工作成功。

我就決定來解決自定義此模板,但由於某種原因,該行:

{{ form.subject }} 

不顯示形式。我是否誤解了documentation?我還檢查生成的HTML和它那種簡單地跳過了{{form.suject}}

下面是代碼:

模板:

<form action="/contact/" method="post"> 
{{ form.non_field_errors }} 
<div class="fieldWrapper"> 
    {{ form.subject.errors }} 
    <label for="id_subject">Email subject:</label> 
    {{ form.subject }} 
</div> 
<div class="fieldWrapper"> 
    {{ form.message.errors }} 
    <label for="id_message">Your message:</label> 
    {{ form.message }} 
</div> 
<div class="fieldWrapper"> 
    {{ form.sender.errors }} 
    <label for="id_sender">Your email address:</label> 
    {{ form.sender }} 
</div> 
<p><input type="submit" value="Send message" /></p> 

和視圖相關聯:

def contact(request): 

if request.method == 'POST': 
    form = contact_form(data=request.POST) 
    if form.is_valid(): 
     subject = form.cleaned_data['subject'] 
     message = form.cleaned_data['message'] 
     sender = form.cleaned_data['sender'] 
     recipents = ['[email protected]'] 
     send_mail(subject, message, sender, recipents) 
     print 'mail sent' 
return render_to_response('contact.html', {'contact_form' : contact_form}, context_instance=RequestContext(request)) 

當然和窗體類:

class contact_form(forms.Form): 

subject = forms.CharField(max_length=100) 
message = forms.CharField(max_length=1000, widget=forms.Textarea) 
sender = forms.EmailField() 
+2

它看起來像在你看來你呈現形式'在上下文contact_form',你也不會將'form'實例傳遞給它。 – mVChr 2012-07-18 15:08:39

回答

0

您的看法並不hav e contact_form變量已定義,但您將其傳遞給render_to_response。 您還需要創建窗體的綁定版本,並把它傳遞給render_to_response像:

def contact(request): 
    if request.method == 'POST': 
     form = contact_form(data=request.POST) 
     if form.is_valid(): 
      ... 
    else: 
     form = contact_form() # An unbound form 
     return render_to_response('contact.html', {'form' : form}, context_instance=RequestContext(request)) 
1

在您選擇render_to_response,只是改變:

{ 'CONTACT_FORM':CONTACT_FORM}

{ '形式':CONTACT_FORM}

或模板,變化{{form.xxx}}轉換爲{{contact_form.xxx}}

+0

你能解釋一下我的區別嗎?爲什麼它會這樣工作? (它現在工作正常) – cp151 2012-07-19 08:32:29