[英]submit button not working in 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>
提交时,页面只是重新加载,没有任何反应,既不提交表单,也不显示错误。
网址.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 中缺少逗号,这是导致上述错误的原因。 我已经更新了代码。
但是现在我的表单由于action
而被提交,即使它是空的也没有显示任何错误。 就像一个链接到thankyou
页面。
如果您完全控制 HTML 渲染,那么您应该自己输出错误:
{{ form.name.errors }}
使用此模板,您将能够在 Django 表单中使用 Twitter Bootstrap
<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>
首先尝试为您的表单包含一个操作。
您是否尝试过action="." ? 我认为这将适用于您的情况。
有可能您没有在表单上添加需要的字段,因此无法提交
所以基本上,我遇到了同样的问题, div 中的type="submit"
似乎是问题所在。 您可以使用具有相同属性的input
标签来解决它,至于名称您可以使用input
标签的value
属性。 如果您想知道为什么输入标签有效而 div 标签无效,请查看下面的链接
[https://docs.djangoproject.com/en/3.2/topics/forms/][1]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.