Django形式:*点击提交按钮时没有*发生

时间:2014-04-22 02:12:19

标签: html django forms

我可能遗漏了一些非常基本的东西,但我很难过。

我的HTML表单(在Django模板中):

<form id="site_signout" method="POST">{% csrf_token %}
     <input type="submit" value="sign in">
</form>

在我的浏览器中(在开发服务器上运行我的网站),当我点击<input>按钮时,没有任何反应。就像,没什么。通常会在终端中显示某些内容,例如

[22/Apr/2014 08:29:17] "POST /my/url/ HTTP/1.1" 302 0

或者在Firebug中,我会在Net面板的HTML标签中看到有关POST的内容。但我什么也没看到。当我点击按钮时,没有任何反应。

我网站上的其他提交按钮(适用于其他表单)工作正常。

导致这种情况的原因是什么?

编辑:我的观点的相关部分是:

if request.method == 'POST':
    pdb.set_trace()

我现在只需要表单,因为我想在编写更多代码之前检查这个场景中发布的内容。

编辑:我的目的是简单地POST到表单所在的同一页面(URL)。据我了解,只需简单地省略action元素的<form>属性即可实现。这就是我的开始,但由于它没有工作,我尝试了其他几个选项,例如action="/",这是我最初发布的内容。但是,我的目的是让表单POST由与表单本身相同的视图处理。因此,我编辑了原始代码示例,完全省略了action属性,以澄清这一点。

这是我的顶级urls.py:

urlpatterns = patterns('',
    url(r'^inspection/', include('main_inspection.urls') ),
    ...
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

这是main_inspection.urls及相关网址:

urlpatterns = patterns('main_inspection.views',
    url(r'^home/$', 'home', name="inspection_home"),
    ...
)

相关视图的网址(在我的开发服务器上)是:

http://127.0.0.1:8000/inspection/home/

2 个答案:

答案 0 :(得分:3)

解决方案结果非常愚蠢,任何阅读上述问题的人都无法发现:

我有一些JS捕获表单所在的div内发生的任何点击事件。

经验教训:当基本的HTML级别出现一些非常奇怪的事情时,请检查以确保您没有编写产生该效果的任何愚蠢的JS代码。

答案 1 :(得分:0)

您的网址&#34; /&#34;应该是这样的:

...
url(r'^$','yourapp.views.index',name="base_address"),
...

当您拨打&#34; /&#34; 地址时,它将会运行&#34; yourapp.views.index&#34;

如果要在表单中设置地址操作属性,请尝试设置地址名称:

<form id="site_signout" method="POST" action="{% url 'base_address' %}">{% csrf_token %}
     <input type="submit" value="sign in">
</form>

我们在分配给&#34; /&#34; 地址的网址中定义了&#34; base_address&#34; 名称,然后将其用于&#34; url&#34; 模板中的方法。