温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Django Form和ModelForm组件

发布时间:2020-07-12 20:03:58 来源:网络 阅读:334 作者:Python热爱者 栏目:编程语言

Form介绍 

我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。

与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确。如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息.。

Django form组件就实现了上面所述的功能。

总结一下,其实form组件的主要功能如下:

生成页面可用的HTML标签

对用户提交的数据进行校验

保留上次输入内容

普通方式手写注册功能

views.py


Django Form和ModelForm组件

login.html


Django Form和ModelForm组件

使用form组件实现注册功能

views.py

先定义好一个RegForm类:


Django Form和ModelForm组件

再写一个视图函数:


Django Form和ModelForm组件

login2.html


Django Form和ModelForm组件

看网页效果发现 也验证了form的功能:

•前端页面是form类的对象生成的                                      -->生成HTML标签功能

•当用户名和密码输入为空或输错之后 页面都会提示        -->用户提交校验功能

•当用户输错之后 再次输入 上次的内容还保留在input框   -->保留上次输入内容

Form那些事儿

常用字段与插件

创建Form类时,主要涉及到 【字段】 和 【插件】,字段用于对用户请求数据的验证,插件用于自动生成HTML;

initial

初始值,input框里面的初始值


Django Form和ModelForm组件

error_messages

重写错误信息。


Django Form和ModelForm组件

password


Django Form和ModelForm组件

radioSelect

单radio值为字符串


Django Form和ModelForm组件

单选Select


Django Form和ModelForm组件

多选Select


Django Form和ModelForm组件

单选checkbox


Django Form和ModelForm组件

多选checkbox


Django Form和ModelForm组件

choice字段注意事项

在使用选择标签时,需要注意choices的选项可以配置从数据库中获取,但是由于是静态字段 获取的值无法实时更新,需要重写构造方法从而实现choice实时更新。

方式一:


Django Form和ModelForm组件

方式二:


Django Form和ModelForm组件

Django Form所有内置字段


Django Form和ModelForm组件

字段校验

RegexValidator验证器


Django Form和ModelForm组件

自定义验证函数


Django Form和ModelForm组件

Hook方法

除了上面两种方式,我们还可以在Form类中定义钩子函数,来实现自定义的验证功能。

局部钩子

我们在Fom类中定义 clean_字段名() 方法,就能够实现对特定字段进行校验。

举个例子:


Django Form和ModelForm组件

全局钩子

我们在Fom类中定义 clean() 方法,就能够实现对字段进行全局校验。


Django Form和ModelForm组件

补充进阶

应用Bootstrap样式


Django Form和ModelForm组件

批量添加样式

可通过重写form类的init方法来实现。


Django Form和ModelForm组件

ModelForm

通常在Django项目中,我们编写的大部分都是与Django 的模型紧密映射的表单。 举个例子,你也许会有个Book 模型,并且你还想创建一个form表单用来添加和编辑书籍信息到这个模型中。 在这种情况下,在form表单中定义字段将是冗余的,因为我们已经在模型中定义了那些字段。

基于这个原因,Django 提供一个辅助类来让我们可以从Django 的模型创建Form,这就是ModelForm。

modelForm定义

form与model的终极结合。


Django Form和ModelForm组件

class Meta下常用参数:


Django Form和ModelForm组件

ModelForm的验证

与普通的Form表单验证类型类似,ModelForm表单的验证在调用is_valid() 或访问errors 属性时隐式调用。

我们可以像使用Form类一样自定义局部钩子方法和全局钩子方法来实现自定义的校验规则。

如果我们不重写具体字段并设置validators属性的化,ModelForm是按照模型中字段的validators来校验的。

save()方法

每个ModelForm还具有一个save()方法。 这个方法根据表单绑定的数据创建并保存数据库对象。 ModelForm的子类可以接受现有的模型实例作为关键字参数instance;如果提供此功能,则save()将更新该实例。 如果没有提供,save() 将创建模型的一个新实例:


Django Form和ModelForm组件


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI