zoukankan      html  css  js  c++  java
  • django_day07

    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
          
  • 相关阅读:
    Hadoop Hive概念学习系列之hive里的视图(十二)
    使用COM提供SafeArray数据
    oracle undo 复杂度--oracle核心技术读书笔记四
    【Ruby】Ruby的model学习——Active Record Associations
    远程数据管理端开关
    跟着ZHONGHuan学习设计模式--桥接模式
    UVA 11768
    linux下查看日志基本命令
    java -D參数简化增加多个jar【简化设置classpath】
    23、Cocos2dx 3.0游戏开发找小三之粒子系统:你那里下雪了吗?
  • 原文地址:https://www.cnblogs.com/DemoLi/p/12770161.html
Copyright © 2011-2022 走看看