2015-02-08 92 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

你尝试行动= “”?我认为这将适用于你的情况。