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

     

    from组件

    form组件的功能

    1. 生产input标签

    2. 对提交的数据可以进行校验

    3. 提供错误提示

    定义form组件

    from django import forms


    class RegForm(forms.Form):
       username = forms.CharField()
       pwd = forms.CharField()

    使用

    视图

    form_obj = RegForm()
    form_obj = RegForm(request.POST)
    form_obj.is_valid():  # 对数据进行校验
    print(form_obj.cleaned_data)  # 通过校验的数据

    return render(request, 'reg2.html', {'form_obj': form_obj})

    模板

    {{ form_obj.as_p }}    __>   生产一个个P标签  input  label
    {{ form_obj.errors }}   ——》   form表单中所有字段的错误
    {{ form_obj.username }}     ——》 一个字段对应的input框
    {{ form_obj.username.label }}   ——》 该字段的中午提示
    {{ form_obj.username.id_for_label }}   ——》 该字段input框的id
    {{ form_obj.username.errors }}   ——》 该字段的所有的错误
    {{ form_obj.username.errors.0 }}   ——》 该字段的第一个错误的错误

    常用字段

    CharField    
    ChoiceField
    MultipleChoiceField  

    字段参数

    required=True,               是否允许为空
    widget=None,                 HTML插件
    label=None,                 用于生成Label标签或显示内容
    initial=None,               初始值
    error_messages=None,         错误信息 {'required': '不能为空', 'invalid': '格式错误'}
    validators=[],               自定义验证规则
    disabled=False,             是否可以编辑

    验证

    1.内置校验
    required=True
    min_length
    max_length
    2.自定义校验器
    1. 写函数

    def checkname(value):
      # 通过校验规则 不做任何操作
      # 不通过校验规则   抛出异常
      if 'alex' in value:
          raise ValidationError('不符合社会主义核心价值观')

    2.使用内置的校验器

    from django.core.validators import RegexValidator
    3.钩子函数:
    1. 局部钩子

      def clean_字段名(self):
        # 局部钩子
        # 通过校验规则 必须返回当前字段的值
        # 不通过校验规则   抛出异常
        raise ValidationError('不符合社会主义核心价值观')
    2. 全局钩子

      def clean(self):
        # 全局钩子
        # 通过校验规则 必须返回当前所有字段的值
        # 不通过校验规则   抛出异常   '__all__'
        pass

    is_valid的流程:

    1.执行full_clean()的方法:

    定义错误字典

    定义存放清洗数据的字典

    2.执行_clean_fields方法:

    循环所有的字段

    获取当前的值

    对进行校验 ( 内置校验规则 自定义校验器)

    1. 通过校验

      self.cleaned_data[name] = value

      如果有局部钩子,执行进行校验:

      通过校验——》 self.cleaned_data[name] = value

      不通过校验——》 self._errors 添加当前字段的错误 并且 self.cleaned_data中当前字段的值删除掉

      1. 没有通过校验

      self._errors 添加当前字段的错误

    3.执行全局钩子clean方法

     

  • 相关阅读:
    根据外键名找到主表和关联表的相关列
    MS SQL 查询未提交的事务和执行的SQL语句
    Ionic 的常见问题
    从零开始在linux上搭建web服务器
    bat 批量提取指定目录下的文件
    tornado 协程 和 多线程
    HTML认识二
    HTML标签认识一
    HTML认识一
    使用Mysql执行SQL语句基础操作
  • 原文地址:https://www.cnblogs.com/anthony-wang0228/p/11103323.html
Copyright © 2011-2022 走看看