这是我的serializers.py(我想为内置用户模型创建一个序列化器):
from rest_framework import serializers
from django.contrib.auth.models import User
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username', 'password', 'email', )
我知道 Django Rest Framework 有它自己的字段验证器,因为当我尝试使用已存在的用户名创建用户时,它会引发错误:
{'username': [u'This field must be unique.']}
我想自定义错误消息并使其显示“此用户名已被占用。请重试”,而不是说“此字段必须是唯一的”。
它还有一个内置的正则表达式验证器,因为当我创建带有感叹号的用户名时,它会显示:
{'username': [u'Enter a valid username. This value may contain only letters, numbers and @/./+/-/_ characters.']}
我想自定义正则表达式验证器,以便它只显示“无效的用户名”。
如何自定义每个字段的所有错误消息?
注意:根据这篇文章:Django Rest Framework 序列化器中的自定义错误消息 https://stackoverflow.com/questions/26943985/custom-error-messages-in-django-rest-framework-serializer我可以:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
def __init__(self, *args, **kwargs):
super(UserSerializer, self).__init__(*args, **kwargs)
self.fields['username'].error_messages['required'] = u'My custom required msg'
但是我该如何处理“唯一”和“正则表达式”验证器呢?我尝试做
self.fields['username'].error_messages['regex'] = u'My custom required msg'
and
self.fields['username'].error_messages['validators'] = u'My custom required msg'
但都不起作用。