zoukankan      html  css  js  c++  java
  • django serializer 定制error_message

    1,在字段上定制字段信息的判断

    class CreateManagerSerializers(serializers.ModelSerializer):
        username = serializers.CharField(validators=[UniqueValidator(
            queryset=models.Manager.objects.all(),
            message='名称重复'
        )])
        password = serializers.CharField(write_only=True)

    ==>在传入库里面已经有的名字时,显示错误信息

    {
    "username": [
    "名称重复"
    ]
    }

    2,在Meta中定制错误信息,效果和字段上定制一样

    
    
    class Meta:
    model = models.Manager
    fields = ['username', 'password', 'email', 'mobile_number', 'role_num', 'channel']
    extra_kwargs = {
    'username':{'validators':[UniqueValidator(
    queryset=models.Manager.objects.all(),
    message='名称重复')]},
    'email': {'validators': [UniqueValidator(
    queryset=models.Manager.objects.all(),
    message='email重复')]},
    }


    ==>错误信息和上面一样

    {
    "username": [
    "名称重复"
    ],
    "email": [
    "email重复"
    ]
    }

    3,利用valition_字段 raise报错信息

    class CreateManagerSerializers(serializers.ModelSerializer):
        username = serializers.CharField()
        password = serializers.CharField(write_only=True)    
        def validate_username(self,value):
            from rest_framework.exceptions import ValidationError
            flag=models.Manager.objects.filter(username=value).exists()
            if flag:
                raise ValidationError('用户名称重复')
            return value

    ==>报错信息

    {
    "username": [
    "用户名称重复"
    ],
    "email": [
    "email重复"
    ]
    }

  • 相关阅读:
    C++ for(char c:s)遍历字符串||for (char c : s)和for (char& c : s)的区别
    二维数组的查找--剑指offer(C++)
    C++学习笔记之--boolalpha
    在C++中matrix.size()和matrix [0] .size()之间的区别是什么?
    C3_note
    用webpack4从零开始构建react脚手架
    php
    正则表达式基础
    DOM
    常用H5
  • 原文地址:https://www.cnblogs.com/52forjie/p/10432538.html
Copyright © 2011-2022 走看看