• 表单校验


    django中的表单不是html中的那个表单,这里是指django有一个组件名叫表单

    1. 创建一个forms.py 文件,放在指定的app当中,然后在里面写表单

    2. forms.py 文件写类:

    from django import forms
    class targetForm(forms.Form):
        name = forms.CharField(max_length=255, min_length=1)
        version = forms.CharField(max_length=128, min_length=1, required=False)  # 可为空

    3. 函数内校验参数

    params = json.loads(request.body)
    form = targetForm(params)
    if not form.is_valid(): 
    pass

     或者

    form = targetForm(request.POST)
    if not form.is_valid(): 
        pass

    is_valid()方法可以验证用户提交的数据是否合法, 这个方法会返回一个bool,合法返回True, 否则返回False

    print(request.POST)

    print(form.is_valid())   打印查看

    自定义验证规则
    假如我们推出了反馈表单,电子邮件纷至沓来。这就引出一个问题:有些邮件可能只有一两个词,不知所云。因此,我们决定采取一个新的验证措施:建议写四个词以上。在 Django 表单中使用自定义的验证有多种方式。如果验证规则要不断复用,可以自定义一个字段类型。不过,多数自定义的验证都是一次性的,可以直接写在Form 类中。我们想对 message 字段做额外的验证,因此在 Form 类中添加一个 clean_message() 方法

     Django 的表单系统会自动查找名称以 clean_ 开头、以字段名结尾的方法。如果存在这样的方法,在验证过程中调用。这里,clean_message() 方法会在指定字段的默认验证逻辑(这个 CharField 是必填的)执行完毕后调用

    1. CharField:
    用来接收文本。
    参数:
    
    max_length:这个字段值的最大长度。
    min_length:这个字段值的最小长度。
    required:如果没有写这个参数,即默认required=True,即这个字段不能为空。
    error_messages:在某个条件验证失败的时候,给出错误信息。
    2. EmailField:
    用来接收邮件,会自动验证邮件是否合法。
    
    3. FloatField:
    用来接收浮点类型,并且如果验证通过后,会将这个字段的值转换为浮点类型。
    参数:
    
    max_value:最大的值。
    min_value:最小的值。
    错误信息的key:required、invalid、max_value、min_value。
    4. IntegerField:
    用来接收整形,并且验证通过后,会将这个字段的值转换为整形。
    参数:
    
    max_value:最大的值。
    min_value:最小的值。

    参考:https://blog.csdn.net/xujin0/article/details/84113013

    django模型字段和表单字段对应:

    https://blog.csdn.net/liereli/article/details/79795205

    模型字段    表单字段
    AutoField    在Form类中无法使用
    BigAutoField    在Form类中无法使用
    BigIntegerField    IntegerField,最小-9223372036854775808,最大9223372036854775807.
    BooleanField    BooleanField
    CharField    CharField,同样的最大长度限制。如果model设置了null=True,Form将使用empty_value
    CommaSeparatedIntegerField    CharField
    DateField    DateField
    DateTimeField    DateTimeField
    DecimalField    DecimalField
    EmailField    EmailField
    FileField    FileField
    FilePathField    FilePathField
    FloatField    FloatField
    ForeignKey    ModelChoiceField
    ImageField    ImageField
    IntegerField    IntegerField
    IPAddressField    IPAddressField
    GenericIPAddressField    GenericIPAddressField
    ManyToManyField    ModelMultipleChoiceField
    NullBooleanField    NullBooleanField
    PositiveIntegerField    IntegerField
    PositiveSmallIntegerField    IntegerField
    SlugField    SlugField
    SmallIntegerField    IntegerField
    TextField    CharField,并带有widget=forms.Textarea参数
    TimeField    TimeField
    URLField    URLField
  • 相关阅读:
    给JavaScript初学者的24条最佳实践
    高音符號的由來是怎樣的
    从零单排学JavaWeb
    数据库建表规则
    linux快捷键
    Linux 命令行快捷键
    DC综合及仿真验证和DFT测试
    verilog中include的用法
    <转>verilog hdl中常数声明
    <转>Verilog HDL宏定义define
  • 原文地址:https://www.cnblogs.com/yu121/p/14575420.html
Copyright © 2020-2023  润新知