django_day07

django form组件

  1. form组件的定义

    class RegForm(forms.Form):
    user = forms.CharField(label='用户名')
    pwd = forms.CharField(label='密码')
  2. 使用

    def reg2(request):
    form_obj = RegForm()
    if request.method == 'POST':
    #对提交的数据做校验
    form_obj = RegForm(request.POST)
    if form_obj.is_valid():#对数据进行校验
    #校验成功
    return HttpResponse('注册成功')
    return render(request,'reg2.html',{'form_obj':form_obj})
  3. 模板

    {{ form_obj.as_p }} 一次性生成所有的input框
    {{ form_obj.user }} 生成该字段的input框
    {{ form_obj.user.label }} 该字段提示的信息
    {{ form_obj.user.id_for_label }} 该字段的input框的id
    {{ form_obj.errors }} 所有字段的错误
    {{ form_obj.user.errors.0 }} 该字段的错误
  4. 常用字段

    CharField  文本输入框
    ChoiceField 单选 默认是select
    MultipleChoiceField 多选 默认是select
  5. 字段参数

    initial = "张三"    默认值
    choices 用户选择数据
    error_messages={} 自定义错误信息
    widget=forms.PasswordInput 修改input框的类型 required=False, 是否必填
    disabled=False, 是否禁用
  6. 校验

    1. 校验器

      def check_name(value):
      #不符合规则
      if 'lsl' in value:
      raise ValidationError("德玛西亚") #捕获错误i
      #符合规则不做任何操作 user = forms.CharField(
      ....
      validators=[check_name],#校验器
      ... )
    2. 使用内置的校验器

      from django.core.validators import RegexValidator
      
      phone = forms.CharField(validators=[RegexValidator(r'^1[3-9]\d{9}$','手机号格式不正确')])
      
      
    3. 钩子函数

      1. 局部钩子

           #写在类里面
        def clean_user(self):#局部钩子
        #不符合校验规则
        value = self.cleaned_data.get('user')
        if 'lsl' in value:
        raise ValidationError("德玛西亚") # 捕获错误i
        #符合校验规则
        return value
      2. 全局钩子

           def clean(self):#全局钩子
        #不符合校验规则 pwd = self.cleaned_data.get('pwd')
        re_pwd = self.cleaned_data.get('re_pwd')
        if pwd != re_pwd:
        #将错误信息加入某个字段里面
        self.add_error('re_pwd','两次密码不一致')
        raise ValidationError('两次密码不一致')
        #符合校验规则 return self.cleaned_data

django_day07的更多相关文章

随机推荐

  1. 23.Nginx+keepalived负载均衡高可用

    Nginx+keepalived负载均衡高可用 结构图 环境: 主 服务器:192.168.239.10 备 服务器:192.168.239.20 Web 服务器1:192.168.239.40 We ...

  2. JS:自增和自减

    自增自减是一元操作符运算 1.++: 前置++:先把取值,再把变量的值加1 后置++:先把变量的值加1,再取值 2.--: 前置--:先把取值,再把变量的值加1 后置--:先把变量的值加1,再取值 v ...

  3. Java 泛型中的通配符

    本文内容如下: 1. 什么是类型擦除 2.常用的 ?, T, E, K, V, N的含义 3.上界通配符 < ?extends E> 4.下界通配符 < ?super E> 5 ...

  4. 如何用python做出老师看了都给满分的GUI学生管理系统毕设

    序 言 哈喽大家好鸭!我是小熊猫 最近有什么有趣的事情发生吗?快来说给我听听( •̀ ω •́ )✧表弟大学快毕业了,学了一个学期Python居然还不会写学生管理系统,真的给我丢脸啊,教他又不肯学,还 ...

  5. # vue3 ref 和 reactive 函数

    vue3 ref 和 reactive 函数 前言 上一篇博文介绍 setup 函数的时候,最后出现一个问题,就是在 setup 函数中,编写一个事件,直接去修改定义的变量,发现页面上没有更新成功,并 ...

  6. Codeforces Round #789 (Div. 2)

    题集链接 A. Tokitsukaze and All Zero Sequence 题意 Tokitsukaze 有一个长度为 n 的序列 a. 对于每个操作,她选择两个数字 ai 和 aj (i≠j ...

  7. Effective C++阅读笔记 较详细 复杂条款带样例

    一.让自己习惯C++ 条款01:视C++为一个语言联邦 C++可视为: C:以C为基础. 面向对象的C++:添加面向对象特性. 模板C++:泛型编程概念,使用模板. STL:使用STL的容器.迭代器. ...

  8. STC8H开发(十三): I2C驱动DS3231高精度实时时钟芯片

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  9. Redis 内存优化神技,小内存保存大数据

    大家好,我是「码哥」,大家可以叫我靓仔. 这次码哥跟大家分享一些优化神技,当你面试或者工作中你遇到如下问题,那就使出今天学到的绝招,一招定乾坤! 如何用更少的内存保存更多的数据? 我们应该从 Redi ...

  10. 用KVM安装MacOS/OSX

    基本步骤按照大牛的步骤https://github.com/kholia/OSX-KVM 黑果镜像建议用黑果小兵的:macOS Big Sur(我试过,大牛的更卡),里面的双EFI就很够用. 将镜像名 ...