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. 手把手教学~基于element封装tree树状下拉框

    在日常项目开发中,树状下拉框的需求还是比较常见的,但是element并没有这种组件以供使用.在这里,小编就基于element如何封装一个树状下拉框做个详细的介绍. 通过这篇文章,你可以了解学习到一个树 ...

  2. JavaScript做简单的购物车效果(增、删、改、查、克隆)

    比如有时候遇到下面这种情况,点击加入购物车,然后在上方的购物车中动态的添加商品以及商品的信息,我们就可以通过JavaScript实现简单的这些操作. 首先我们需要在html文档中,通过css对页面的布 ...

  3. SAP 动态选择屏幕实例

    DATA:BEGIN OF gs_sel, werks TYPE marc-werks, "工厂 matnr TYPE mara-matnr, "物料 mtart TYPE mar ...

  4. 《The Tail At Scale》论文详解

    简介 用户体验与软件的流畅程度是呈正相关的,所以对于软件服务提供方来说,保持服务耗时在用户能接受的范围内就是一件必要的事情.但是在大型分布式系统上保持一个稳定的耗时又是一个很大的挑战,这篇文章解析的是 ...

  5. UiPath文本操作Set Text的介绍和使用

    一.Set Text的介绍 向输入框/文本框写入文本的一种操作 二.Set Text在UiPath中的使用 1.打开设计器,在设计库中新建一个Sequence,为序列命名及设置Sequence存放的路 ...

  6. EasyExcel导出添加批注

    直接看代码.根据个人需要做改动 注:POI也可以做批注,文章链接https://www.cnblogs.com/qq1445496485/p/15622664.html /** * 导出(批注) * ...

  7. Servlet-3 :JDBC+重定向

    请求重定向 redirect1) Servlet接收到浏览器端请求并处理完成后,给浏览器端一个特殊的响应,这个特殊的响应要求浏览器去请求一个新的资源,整个过程中浏览器端会发出两次请求,且浏览器地址栏会 ...

  8. springboot配置logback.xml

    由于springboot框架自带log4j,因此我们只需配置下logback文件,即可, 在main/resources根目录下,新建logback-spring.xml文件,copy下述代码: &l ...

  9. HashMap设计原理与实现(下篇)200行带你写自己的HashMap!!!

    HashMap设计原理与实现(下篇)200行带你写自己的HashMap!!! 我们在上篇文章哈希表的设计原理当中已经大体说明了哈希表的实现原理,在这篇文章当中我们将自己动手实现我们自己的HashMap ...

  10. java.super详解

    package Demo.oop.APP.Demo03; //demo3包的启动器 //此启动器用于继承 public class application { public static void m ...