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
    
  • 相关阅读:
    docker 部署aps.net MVC到windows容器
    docker 搭建私有仓库 harbor
    解决关于:Oracle数据库 插入数据中文乱码 显示问号???
    ionic cordova build android error: commamd failed with exit code eacces
    cordova build android Command failed with exit code EACCES
    Xcode 10 iOS12 "A valid provisioning profile for this executable was not found
    使用remix发布部署 发币 智能合约
    区块链: 编译发布智能合约
    mac 下常用命令备忘录
    JQuery fullCalendar 时间差 排序获取距当前最近的时间。
  • 原文地址:https://www.cnblogs.com/russellyoung/p/Django-zhiform-zu-jian.html
Copyright © 2011-2022 走看看