2015-02-08 95 views
3

不工作在我的Django模板時,我渲染整個表單同時,提交按鈕的作品和形式得到提交或錯誤顯示出來,如果有任何:提交按鈕在Django

<form action="" method="POST" > 
       {% csrf_token %} 
        <div class="row"> 
         <div class="small-12 large-8 columns"> 
          {{ form }} 
          <input type="submit" value="submit"> 
         </div> 
        </div> 
</form> 

但是當我渲染這樣的:

<form action="" method="POST" > 
       {% csrf_token %} 
        <div class="row"> 
         <div class="small-6 columns"> 
          {{ form.name }} 
          <input type="submit" value="submit"> 
         </div> 
         <div class="small-6 columns"> 
          {{ form.email}} 
         </div> 
        </div> 
        <div class="row"> 
         <div class="small-6 columns"> 
          {{ form.model_no}} 
         </div> 
         <div class="small-6 columns"> 
          {{ form.phone_no}} 
         </div> 
        </div> 
        <div class="row"> 
         <div class="small-12 columns"> 
          {{ form.problem_details}} 
         </div> 
        </div> 
       <div class="row"> 
        <div class="small-12 columns"> 
         <input type="submit" value="submit"> 
        </div> 
       </div> 
      </form> 

關於提交,頁面剛剛重新加載,沒有任何反應,也沒有任何形式的提交和錯誤顯示。

urls.py:

from django.conf.urls import patterns, include, url 
from django.contrib import admin 

    urlpatterns = patterns('', 
     url(r'^$', 'query_form.views.contactview', name="home"), 
     url(r'^thankyou/', 'query_form.views.thankyou', name="thankyou"), 
     url(r'^admin/', include(admin.site.urls)), 
    ) 

views.py:http://pastebin.com/TGzkh7aq

我想用第二種方法進行適當的造型。請幫忙。

我有答案,我應該提供一個'行動'的形式,但我的問題是爲什麼第一種方法工作,第二不是沒有'行動'。

編輯:使用action="{% url 'thankyou' %}"我收到以下錯誤:

NoReverseMatch at/ Reverse for 'thankyou' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []

更新:我是缺少在urls.py逗號,這是造成上述錯誤。我更新了代碼。

但是現在我的表單正在提交,因爲它是空的,即使它沒有顯示任何錯誤。就像鏈接到thankyou頁面。

+0

你可以發佈你的'urls.py'文件嗎?最終,你在表單中缺少一個'action',它會在你提交之後處理重定向,但是當你按下提交按鈕時,知道你希望表單最終到達的位置會幫助我形成一個更完整的解決方案。 – GJStein 2015-02-08 13:32:13

+0

@SuperGroy我已經更新了這個問題。 – vicodin 2015-02-08 14:28:59

+0

@vicodin可能是您的數據有錯誤,但您無法看到它們。看看我的答案,鏈接到文檔。 – catavaran 2015-02-08 14:46:16

回答

1

如果你把HTML渲染的總量控制,那麼你應該output the errors by yourself

{{ form.name.errors }} 
+0

並在窗體頂部也有'{{form.non_field_errors}}'。 – 2015-02-08 16:08:55

+0

@DanielRoseman當然。如鏈接文檔中第一個示例的第一行所示:-) – catavaran 2015-02-08 16:38:50

+0

謝謝,這是解決錯誤處理的問題,但我的表單仍未提交。 – vicodin 2015-02-08 18:43:01

0

第一次嘗試包括您形式的行動。

1

有了這個模板,你將能夠使用Twitter的引導與你的Django形成

<form class="form-horizontal" action="" method="POST" {% if form.is_multipart %}enctype="multipart/form-data"{% endif %}> 
{% csrf_token %} 
{{ form.media }} 
{% if form.errors %} 
    <div class="alert alert-error"> 
     <ul> 
      {% for error in form.non_field_errors %} 
       <li>{{ error }}</li> 
      {% endfor %} 
     </ul> 
    </div> 
{% endif %} 
{% for field in form.visible_fields %} 
    <div class="control-group {{ field.html_name }} {% if field.errors %}error{% endif %}"> 
     <label class="control-label">{{ field.label }}{% if field.field.required %} *{% endif %}</label> 
     <div class="controls"> 
      {{ field }} 
      {% if field.errors %}<span class="help-inline">{{ field.errors.as_text }}</span>{% endif %} 
     </div> 
    </div> 
{% endfor %} 
{% for field in form.hidden_fields %} 
    {{ field }} 
{% endfor %} 

{% block formsets %} 
    {% for formset in inlines %} 
     {% include "inline_formset.html" with formset=formset %} 
    {% endfor %}   
{% endblock formsets %} 

<div class="form-actions"> 
    <input class="btn btn-primary btn-large" type="submit" value="Submit"/> 
    {% block extra_buttons %} 
    {% endblock extra_buttons %} 
</div> 

+1

我可以使用,但我想知道爲什麼提交按鈕不能在第二種情況下工作。 – vicodin 2015-02-11 04:14:28

0

你嘗試行動= 「」?我認爲這將適用於你的情況。