没有动作的 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 表单的主要内容,如果未能解决你的问题,请参考以下文章