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. BI与SaaS碰撞,让数据处理更加轻松(下)

    背景 在上篇内容中,我们从SaaS各种功能的角度为大家介绍了在数据处理中SaaS的巨大价值,而本次我们将用实例将为大家展示SaaS与BI间的碰撞又会产生怎样的火花. BI与SaaS集成示例 通常BI分 ...

  2. 眼球3D可视化解决方案——案例详解

    医疗器械行业伴随着人类健康需求的增长而不断发展,是名副其实的朝阳行业,也是全球发达国家竞相争夺的领域. 一方面,行业门槛高,集中度低,外资企业挤占市场空间成了我国所有医疗器械行业入局者面临的共同挑战. ...

  3. Java基础-JVM篇

    1.1 .线程 ​ 这里所说的线程指程序执行过程中的一个线程实体.JVM 允许一个应用并发执行多个线程.Hotspot JVM 中的 Java 线程与原生操作系统线程有直接的映射关系.当线程本地存储. ...

  4. 数据库 OLAP、OLTP是什么?相同和不同?适用场景

    一.OLTP和OLAP是什么,二者比较 人类世界遵从基本的物理规律,数据世界里,关于数据的操作处理,也大体分为OLTP和OLAP两类. OLTP on-line transaction process ...

  5. Linux for CentOS 下的 nginx 绿色安装-超省心安装

    1.我这里是nginx-1.13.0-1.x86_64 .rpm(点击下载)版本的. 2.安装nginx的相应环境.有些环境可能不必须,但是安装了,确保以防万一,多多益善 yum install gd ...

  6. jdk8 hashmap 链表resize 源码分析

    重点看这部分代码 for (int j = 0; j < oldCap; ++j) { Node<K,V> e; if ((e = oldTab[j]) != null) { old ...

  7. javaWeb,web服务器

    一. 1.ASP 国内最早最流行的语言就是ASP:微软研发 在HTML中嵌套了VB脚本,ASP+COM(网页元素) 在ASP开发中,基本一个业务就有几千行代码,页面机器混乱 维护成本高 <h1& ...

  8. java.Scanner 拓展用法

    package study5ran2yl.study; import java.util.Scanner; public class demo11 { public static void main( ...

  9. RabbitMQ消费者消失与 java OOM

    原因: 下午先是收到钉钉告警有一个消费者系统任务积压, 当时以为就是有范围上量没有当回事,后来客服群开始反馈说有客户的数据没有生成.这个时候查看mq的后台,发现任务堆积数量还是很多. 这个时候登录一台 ...

  10. MATLAB复习资料——浙商大管工学院适用

    包含12套复习卷,课堂PPT 下载链接:MATLAB练习模拟题库(12套).pdf - 蓝奏云 (lanzoub.com)