博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django-forms效验组件
阅读量:4921 次
发布时间:2019-06-11

本文共 3062 字,大约阅读时间需要 10 分钟。

forms效验组件

可以帮我们快速的进行字段的判断

用法记忆

  1. from django import forms 导入模块
  2. class UserForm(forms.Form): 创建类
    name=forms.CharField(min_length=4,lable='姓名')
  3. form = UserForm(request.POST) 实例化可以传递参数也可以不用传递参数
  4. form.is_valid() 校验字段
  5. form.cleaned_data 校验成功的字段
  6. form.errors 校验失败的字段
  7. form.name 模板中渲染input
  8. form.name.errors 模板中渲染当前字段的错误信息
  9. from django.forms import widgets 导入设置字段属性的模块
  10. 字段的属性设置

    lable='姓名' 设置字段中文名
    widgets = PasswordInput() 设置字段渲染type属性为password
    widgets = TextInput() 设置字段渲染type属性为text
    widgets = TextInput(attrs={"class":"form-contrl"}) 设置inpu标签的属性
    error_messages = {'required':'该字段不能为空'} 配置显示的错误信息,key不能修改
    error_messages = {'invalid':'格式错误'} 格式错误

    创建类

class UserForm(forms.Form):    name=forms.CharField(min_length=4,lable='姓名')    email = forms.EmailField(lable='邮箱')

froms组件的字段参数配置

  1. from django.forms import widgets 首先 导入模块
  2. name=forms.CharField(min_length=4,lable='姓名',widgets = PasswordInput)
  3. 字段属性的设置
    widgets = PasswordInput() 设置字段渲染type属性为password
    widgets = TextInput() 设置字段渲染type属性为text
    widgets = TextInput(attrs={"class":"form-contrl"}) 设置inpu标签的属性
    error_messages = {'required':'该字段不能为空'} 配置显示的错误信息,key不能修改
    error_messages = {'invalid':'格式错误'} 格式错误

在视图函数中实例化

form = UserForm(request.POST) 实例化Form对象

校验方法

form.is_valid() #校验提交的字段是否符合信息,返回布尔值

  1. 如果 form.is_valid() 为True form.cleaned_data 返回值是字典,所有的效验成功的字段,和字段值,
  2. 如果form.is_valid() 为False form.errors 返回的是字典,所有校验失败的字段,和字段值,form.cleaned_data 返回值是字典,所有的效验成功的字段,和字段值,
  3. form.cleaned_data 所有的效验成功的字段,和字段值
  4. form.errors 返回的是字典,所有校验失败的字段,和字段值,form.cleaned_data 返回值是字典,所有的效验成功的字段,和字段值,

    在模板中渲染form

  5. form = UserForm() 首先实例化form对象,不传递参数
  6. 把变量出入模板中
  7. 可以form.name进行input的标签渲染,或者进行for循环渲染,在或者{
    {from.as_p}} {
    {from.as_ul}} 把所有字段渲染出来 _p ,_ul 这个代表渲染出来的标签
  8. 进行渲染时可以取出lable属性 如 form.name.lable

渲染错误信息

  1. form = UserForm(request.POST)当有参数实例化时 在模板中渲染会把你传进来的值,渲染进去
  2. form.name.errors 存放的是当前字段错误信息的列表,这里是name字段信息的错误列表
  3. form.name.errors.0 取出错误信息

自定义forms组件校验规则

from django.core.exceptions import ValidationErrorclass UserForm(forms.Form):    name=forms.CharField(min_length=4,lable='姓名')    email = forms.EmailField(lable='邮箱')        # 局部钩子    def clean_name(self):        val=self.cleaned_data.get("name")        if not val.isdigit():            return val        else:            raise ValidationError("用户名不能是纯数字!")    # 全局钩子    def clean(self):        pwd=self.cleaned_data.get("pwd")        r_pwd=self.cleaned_data.get("r_pwd")        if pwd and r_pwd:            if pwd==r_pwd:                return self.cleaned_data            else:                raise ValidationError('两次密码不一致!')        else:            return self.cleaned_data    def register(request):        if request.method=="POST":            form=UserForm(request.POST)            if form.is_valid():                print(form.cleaned_data)       # 所有干净的字段以及对应的值            else:                clean_error=form.errors.get('__all__')            return render(request,"register.html",locals())        form=UserForm()        return render(request,"register.html",locals())

注意

  1. 使用局部钩子时用一定要用 clean_开头 加字段名去命名 如clean_name
  2. 全局错误信息会放到form.errors字段 __all__对应的值中

转载于:https://www.cnblogs.com/tianhen/p/11261654.html

你可能感兴趣的文章
10月29日 迅雷会员vip账号分享 91freevip 晚间21:00更新
查看>>
【一题多解】Python 字符串逆序
查看>>
open ball、closed ball 与 open set、closed set(interior point,limit point)、dense set
查看>>
字典(dictionary)与映射(map)
查看>>
Python 编程规范 —— TODO 注释(结合 PyCharm)
查看>>
十万个为什么 —— 名词解释(体育)
查看>>
table的设置(w3c)
查看>>
冲刺一
查看>>
【练习】在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b...
查看>>
python解决上楼梯问题
查看>>
变参宏 __VA_ARGS__
查看>>
sql 语句
查看>>
VUE一 基础语法
查看>>
[MySQl]MySQL忘记密码
查看>>
Android的minSdkVersion,targetSdkVersion,maxSdkVersion
查看>>
Xceed WinForm数据表格控件Xceed Grid For .NET控件详细介绍及下载地址
查看>>
ecos启动流程分析
查看>>
Oracle CASE WHEN 用法介绍
查看>>
linux 下连接mysql服务器
查看>>
DOMContentLoad 首屏渲染
查看>>