2009-07-15 102 views
9

我刚开始使用django。我遇到过表单,我需要知道哪一个是验证表单的更好方法。它会使用Django的形式,或者我们应该使用JavaScript或一些客户端脚本语言来做到这一点?django中的表单验证

+3

你会得到更多的观众与标签`django`不是像`Django的forms`一个子标签。总是尝试为您正在使用的主要平台/语言(例如`.net`,`java`,`django`等)添加至少一个标签,特别是当您未达到五个标签限制时。 – Zifre 2009-07-15 13:01:45

回答

16

你应该始终验证在服务器端的形式,客户端验证,但只为用户提供了方便。

这就是说,Django表单具有可变form.errors其示出了如果某些表单字段是不正确的。

{{form.name_of_field.errors}}可以给你的每一个真实填写不正确场的每一个人的错误。查看更多在这里:

http://docs.djangoproject.com/en/dev/topics/forms/

+4

文档*不提及的一件事就是{{form.non_field_errors}}的存在,因为当您想要获取*仅适用于整个表单的错误时。 – 2009-07-15 13:11:25

5

有一个可插拔的Django应用程序(django-ajax-forms),有助于通过JavaScript验证在客户端的形式。但是,正如AlbertoPL所说,仅将客户端验证用作可用性度量(例如,告诉用户他的所需用户名已被占用,而无需重新加载注册页面)。有许多方法可以回避客户端验证,在大多数情况下只需停用JavaScript即可。

一般来说:假设所有数据来自外部出现故障,直到来验证。

4

刚来到翻过Django的floppyforms,这似乎在默认情况下做客户端验证。他们使用默认支持客户端验证的HTML5。不确定他们是否也使用JavaScript,尽管如果浏览器不支持HTML5。还没有尝试过呢。

链接到Django的floppyforms:DocumentationGithub

0

你需要做的,这是JS。 This app将表单与parsley.js集成,以便使用正确的data- *属性自动标记表单。

2

如果您使用引导程序,那么您可以简单地在表单字段中添加必需的属性。例如,如果有PROGRAME场,那么你可以验证它想:

在forms.py:

programme = forms.ChoiceField(course_choices,required=True, widget=forms.Select(attrs={'required':'required'})) 

注:它要求链接在你的.html页面形式来引导文件。