Django Form和ModelForm组件

103 阅读4分钟

login.html

 

使用form组件实现注册功能

views.py

先定义好一个RegForm类:

 

再写一个视图函数:

 

login2.html

 

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

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

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

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

Form那些事儿

常用字段与插件

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

initial

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

 

error_messages

重写错误信息。

 

password

 

radioSelect

单radio值为字符串

 

单选Select

 

多选Select

 

单选checkbox

 

多选checkbox

 

choice字段注意事项

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

方式一:

 

方式二:

 

Django Form所有内置字段

 

字段校验

RegexValidator验证器

 

自定义验证函数

 

Hook方法

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

局部钩子

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

举个例子:

 

全局钩子

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

 

补充进阶

应用Bootstrap样式

 

批量添加样式

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

 

ModelForm

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

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

modelForm定义

form与model的终极结合。