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
          
  • 相关阅读:
    51) 项目管理过程简述
    50) 构建完美Docker镜像
    49) 检查Kubernetes集群是否健康
    48) linux运维简答题
    47) 云架构演变 [ECS4]
    46) ECS弹性伸缩和GRE隧道 [ECS3]
    php单文件上传和多文件上传
    PHP文件处理及高级应用
    PHP八种数据类型+使用实例
    php Session方法实例
  • 原文地址:https://www.cnblogs.com/DemoLi/p/12770161.html
Copyright © 2011-2022 走看看