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. 《ECMAScript 6 入门》【一、let、const命令】(持续更新中……)

    前言: 我们在ES5都使用var来声明常量跟变量,ES6使用了最新的语法,使用let跟const分别声明.一.let命令: let命令是用于声明变量块级作用域 1. { let a = 10; var ...

  2. WPF开发随笔收录-ScrollViewer滑块太小解决方案

    一.前言 在WPF开发过程中,ScrollViewer是一个很常使用到的控件,在自己工作的项目中,收到一个反馈就是当ScrollViewer里面的内容太长时,滚动条的滑块就会变得很小,然后导致点击起来 ...

  3. .NET6接入Skywalking链路追踪完整流程

    一.Skywalking介绍 Skywalking是一款分布式链路追踪组件,什么是链路追踪? 随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务.互联网应用构建在不同的软 ...

  4. python小题目练习(八)

    题目:电视剧的收视率排行榜 需求:实现如下图所示需求  代码展示: """Author:mllContent:电视剧的收视率排行榜Date:2020-11-16" ...

  5. 入门Python数据分析最好的实战项目(一)分析篇

    数据初探 首先导入要使用的科学计算包numpy,pandas,可视化matplotlib,seaborn,以及机器学习包sklearn. python学习交流群:660193417### import ...

  6. 利用IDEA搭建SpringBoot项目,整合mybatis

    一.配置文件.启动项目 生成之后这几个文件可以删掉的 配置application spring.datasource.url=jdbc:mysql://localhost:3306/test?serv ...

  7. Docker — 从入门到实践PDF下载(可复制版)

    0.9-rc2(2017-12-09)修订说明:本书内容将基于DockerCEv17.MM进行重新修订,计划2017年底发布0.9.0版本.旧版本(Docker1.13-)内容,请阅读docker-l ...

  8. 神经网络可视化《Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization》

    神经网络已经在很多场景下表现出了很好的识别能力,但是缺乏解释性一直所为人诟病.<Grad-CAM:Visual Explanations from Deep Networks via Gradi ...

  9. 温湿度监测系统设计:基于 STM32 的温湿度变送器的设计与实现

    前言:这个是2018年上半年完成的,这里只贴出硬件设计部分,软件设计部分可以看上位机说明书. 设计总说明 随着科学技术的不断发展,高集成度.高精度.高可靠性的一体化温湿度变送器开始 得到广泛的应用.同 ...

  10. 基于.NetCore开发博客项目 StarBlog - (15) 生成随机尺寸图片

    系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...