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. python是什么?工作前景如何?怎么算有基础?爬数据违法嘛......

    随着python越来越火爆并在2021年10月,语言流行指数的编译器Tiobe将Python加冕为最受欢迎的编程语言,且置于Java.C和JavaScript之上,于是越来越多的人开始了解python ...

  2. 加班?不存在的啦~Python处理Excel,学会这十四个方法,工作量减少大半

    现在Python横行的年代,财务.人事.行政等等岗位多少得学点Python,省事又不费脑!所有操作都用Python自动实现, 加班?不存在的! excel和python其实都是工具,不要也不用拿去做对 ...

  3. 对象映射 - Mapping.Mapster

    前言 在项目中我们会经常遇到对象的映射,比如像Model和Dto之间的映射,或者是对象的深拷贝,这些都是需要我们自己实现的.此时,项目中会出现很多初始化对象的代码,这些代码写起来相当的枯燥乏味,那么有 ...

  4. 如何查看/修改Redis密码

    一.修改密码: 打开redis.windows.conf文件,默认是没有红框框里这句话的,因为默认密码是"",就是没有,跟MySql一样. 加上这句话意思就是密码修改为 root ...

  5. 史上最全学习率调整策略lr_scheduler

    学习率是深度学习训练中至关重要的参数,很多时候一个合适的学习率才能发挥出模型的较大潜力.所以学习率调整策略同样至关重要,这篇博客介绍一下Pytorch中常见的学习率调整方法. import torch ...

  6. Spring Boot 知识点总结

    现在仅总结重要和实用的知识点,更加全面的请见链接:1.:2.. 微服务:架构风格(服务微化):一个应用应该是一组小型服务:可以通过HTTP的方式进行互通:微服务:每一个功能元素终都是一个可独立替换和独 ...

  7. 禁用Chrome自动更新

    删除下Update目录 C:\Program Files (x86)\Google\Chrome\

  8. 一文解决Vue中实现 Excel下载到本地以及上传Excel

    相信大家在项目中经常会遇到一些上传下载文件的相关功能,本文就Excel的相关功能进行简述: 咱直接看代码: <div class="import-main-content"& ...

  9. 【Python爬虫技巧】快速格式化请求头Request Headers

    你好,我是 @马哥python说 . 我们在写爬虫时,经常遇到这种问题,从目标网站把请求头复制下来,粘贴到爬虫代码里,需要一点一点修改格式,因为复制的是字符串string格式,请求头需要用字典dict ...

  10. 2022-07-15 第六组 润土 Java03数据结构学习笔记

    数据结构: 数组:最基本的数据结构(线性表) 链表:单向链表,双向链表 树:二叉树 图:深度优先遍历.广度优先遍历 查找: 线性查找 折半查找 排序: 冒泡排序* 快速排序 插入排序* 选择排序* 希 ...