没有动作的 HTML 表单

Posted

技术标签:

【中文标题】没有动作的 HTML 表单【英文标题】:HTML Forms without actions 【发布时间】:2010-10-13 01:56:37 【问题描述】:

在 Django / Pinax 中,我遇到了这样开头的登录表单:

<form class="login" method="POST" action="">

效果很好。因此,我假设 Django 框架中的某些 java 脚本或某些东西将值放入 action 属性中。 所以,我的问题:

Django 如何插入动作? 他们为什么这样做? 我怎样才能知道这个表单的作用是什么?

更新:我发现这根本不是 Django 的事情,而是大多数浏览器所做的事情。

【问题讨论】:

【参考方案1】:

有关 具有空操作的表单的有趣见解请阅读 this thread,它为您提供了有关此问题的最新 html5 视角。

【讨论】:

【参考方案2】:

我想现在回答这个帖子有点晚了。不管怎样,我会从这件事上学到什么。

如果表单中没有指定“动作”,那么 Django 在相应的视图中查找HttpResponseRedirect

例如,在下面的例子中:

if form.is_valid(): # All validation rules pass
        # Process the data in form.cleaned_data
        # ...
        return HttpResponseRedirect('/thanks/')

一旦表单被验证(和处理),页面就会被重定向到'thanks'

【讨论】:

【参考方案3】:

也有可能,加载该页面的 javascript 可能会在页面加载后根据正在使用该页面的应用程序设置一个操作。

另一个可能的可能性是 javascript 正在处理 onsubmit 事件。这样做可能是为了防止页面重新加载或重定向到特定页面

【讨论】:

【参考方案4】:

在大多数浏览器中,空字符串的操作会将表单指向浏览器当前加载的 URL,这是最初为表单提供服务的脚本。

【讨论】:

啊。我不知道。那么这只是懒惰还是依靠它是一种好习惯 我会说好的做法,因为您减少了代码中的 url 数量。但我更喜欢根本不采取行动。是否有任何浏览器需要空操作? 没有动作属性的表单在所有主流浏览器中都能正常工作。但是,如果您希望您的 HTML 进行验证,则 action 属性是必需的。

以上是关于没有动作的 HTML 表单的主要内容,如果未能解决你的问题,请参考以下文章

使用 AJAX 时,表单的“动作”属性是不是无用?

具有多个“动作”的 HTML 表单

如何将 HTML 表单数据作为 JSON 发送到服务器?

HTML表单完成两个动作?验证然后通过一个提交按钮重定向

对 HTML 表单的 action 属性使用空 URL 是一种好习惯吗? (动作="")

HTML,如何按回车提交表单