Django-forms效验组件

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 ValidationError
class 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值