zoukankan      html  css  js  c++  java
  • Django之form组件

    1.sweetalert

    https://sweetalert.js.org/guides/

    1. form组件

      1. form表单完成的事情
        1. 提供input可以提交数据
        2. 对提交的数据进行校验
        3. 提供错误提示
      2. 定义form组件
      from django import forms
      class RegForm(forms.Form):
      user = forms.CharField(label='用户名')
      pwd = forms.CharField(label='密码')
      1. 使用

      视图中:

      form_obj = RegForm()   # 实例化form对象
      return render(request, 'reg2.html', {'form_obj': form_obj})
      

      模板中:

      form 标签加上novalidate 前端不进行校验

      {{ form_obj.as_p }}   ——》  生成所有的p标签   label  input
      {{ form_obj.errors }}   ——》所有字段的错误
      {{ form_obj.user }} ——》 该字段的input框
      {{ form_obj.user.label }} ——》 该字段的label 中文提示
      {{ form_obj.user.id_for_label }} ——》 该字段的id
      {{ form_obj.user.errors }} ——》 该字段的所有的错误信息
      {{ form_obj.user.errors.0 }} ——》 该字段的第一个的错误信息

    2.字段和参数

    1. 常用的字段

    ​ CharField input

    ​ ChoiceField select框

    MultipleChoiceField   多选框
    
    1. 字段的参数:

      required=True, 是否允许为空
      widget=None, HTML插件
      label=None, 用于生成Label标签或显示内容
      initial=None, 初始值

      error_messages=None, 错误信息 {'required': '不能为空', 'invalid': '格式错误'}
      validators=[], 自定义验证规则
      disabled=False, 是否可以编辑

    3.校验:

    1. 内置校验

      ​ required=True,min_length=8,max_length=12,

      1. 自定义的校验(自定义校验器)

        1. 定义函数
      from django.core.exceptions import ValidationError
      def check(value):
      if 'alex' in value:
      raise ValidationError('敏感词汇,不符合社会职业核心价值观')
      validators=[check]
      1. from django.core.validators import RegexValidator
        validators=[RegexValidator(r'^1[3-9]d{9}$', '格式不正确')]

    4.流程:

    ​ form_obj.is_valid() 是否通过校验

    ​ form_obj.cleaned_data 经过校验的合格的数据

    1. 局部钩子

      定义一个放法 clean_字段名(self,)的方法,如果不通过校验规则,要抛出异常ValidationError,如果通过校验规则,返回通过校验的值

      def clean_user(self):
         value = self.cleaned_data.get('user')
      if 'alex' in value:
      raise ValidationError('敏感词汇,不符合社会职业核心价值观')
      return value
    2. 全局钩子

    定义一个放法 clean(self)的方法,如果不通过校验规则,要抛出异常ValidationError,还可以自己使用self.add_error('re_pwd', '两次密码不一致!!@!')添加错误信息。如果通过校验规则,返回所有通过校验的值

    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
    
  • 相关阅读:
    多线程程序设计学习(10)Future pattern
    Stack编程队列
    JS操作JSON总结
    java并发之TimeUnit理解
    java并发之DelayQueue实际运用示例
    netty的编解码器理解(转)
    spring中@Resource和@Autowired理解
    Netty中解码基于分隔符的协议和基于长度的协议
    构建基于Netty 的HTTP/HTTPS 应用程序
    对于spring中事务@Transactional注解的理解
  • 原文地址:https://www.cnblogs.com/russellyoung/p/Django-zhiform-zu-jian.html
Copyright © 2011-2022 走看看