提交按钮在django中不起作用

时间:2015-02-08 13:27:33

标签: python django forms django-forms

在我的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

我想使用第二种方法来进行正确的样式设计。请帮忙。

我得到了答案,我应该提供一个&#39;行动&#39;对于表单,但我的问题是为什么第一种方法有效,第二种方法没有&#39;动作&#39;。

编辑:关于使用action="{% url 'thankyou' %}"我收到以下错误:

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

更新:我在urls.py中缺少逗号,导致上述错误。我已经更新了代码。

但是现在我的表单因action而被提交,即使它是空的而没有显示任何错误。就像指向thankyou页面的链接一样。

5 个答案:

答案 0 :(得分:1)

如果您完全控制HTML呈现,那么您应该output the errors by yourself

{{ form.name.errors }}

答案 1 :(得分:1)

使用此模板,您将能够将Twitter Bootstrap与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>

答案 2 :(得分:0)

首先尝试为您的表单添加操作。

答案 3 :(得分:0)

您是否尝试过 action =“。”?我认为这适用于您的情况。

答案 4 :(得分:0)

有可能您没有在表单上添加必填字段,因此无法提交