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方法

     

  • 相关阅读:
    magic_quotes_gpc(魔术引号开关)
    获取文件绝对路径:__FILE__与 $_SERVER[SCRIPT_FILENAME''] 的 区别
    小程序wx:key中的关键字*this
    swiper 更改indicator-dots 属性 隐藏面板指示点
    B站视频下载
    makefile教程
    Qt 中配置 c99的问题
    C语言编译过程及相关文件
    go语言入门(10)并发编程
    go语言入门(9)文本文件处理
  • 原文地址:https://www.cnblogs.com/anthony-wang0228/p/11103323.html
Copyright © 2011-2022 走看看