Django验证器

Django验证器

Django验证器可用于去重,逻辑判断等功能

validators

  • UniqueValidator
    • 此验证器可用于unique=True对模型字段强制实施约束。它需要一个必需的参数和一个可选messages参数:
      • queryset required - 这是应该强制执行唯一性的查询集。
      • message - 验证失败时应使用的错误消息。
      • lookup - 用于查找具有验证值的现有实例的查找。默认为'exact'。
        此验证器应该应用于序列化器字段,如下所示:
        validators=[UniqueValidator(queryset=BlogPost.objects.all())]
  • UniqueTogetherValidator
    • 此验证程序可用于unique_together对模型实例强制实施约束。它有两个必需的参数和一个可选messages参数:
      • queryset required - 这是应该强制执行唯一性的查询集。
      • fields required - 应该创建唯一集合的字段名称列表或元组。这些必须作为序列化程序类的字段存在。
      • message - 验证失败时应使用的错误消息。

      class TaskSerializer(serializers.ModelSerializer):
      class Meta:
      model = Task
      fields = ('name', 'keyword', 'user_id')

          validators = [
              UniqueTogetherValidator(
                  queryset=Task.all(),
                  fields=['user_id', 'name'],
                  message='相同任务名已存在'
              ),
              UniqueTogetherValidator(
                  queryset=Task.all(),
                  fields=['user_id', 'keyword'],
                  message='相同关键字已存在'
              ),
          ]

可选字段

默认情况下,“一起唯一”验证会强制执行所有字段 required=True。在某些情况下,您可能希望显式应用于 required=False其中一个字段,在这种情况下,验证的所需行为是不明确的。

在这种情况下,您通常需要从序列化程序类中排除验证程序,而是在.validate()方法中或在视图中显式写入任何验证逻辑。

例如:

class BillingRecordSerializer(serializers.ModelSerializer):
    def validate(self, data):
        # Apply custom validation either here, or in the view.

    class Meta:
        fields = ['client', 'date', 'amount']
        extra_kwargs = {'client': {'required': False}}
        validators = []  # Remove a default "unique together" constraint.

自定义验证器

def judge(aaa):
    if len(aaa) != 40:
        print('长度不正确')
        return

  
  
from xxx import judge
validators = 
上一篇:flask之wtforms


下一篇:Flask-wtforms