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
          
  • 相关阅读:
    this
    git使用整个过程整理
    javaScript事件知识点
    charles-web端开发者实用功能点
    react native 添加第三方插件react-native-orientation(横竖屏设置功能 android)
    react native 运行项目下载gradle慢的解决办法
    移动端 滑动组件 slip
    高逼格 分页列表 bootstrap-table
    reactjs 接入数据模型以及markdown语法的支持
    react-native 环境搭建以及项目创建打包
  • 原文地址:https://www.cnblogs.com/DemoLi/p/12770161.html
Copyright © 2011-2022 走看看