django - DRF 错误消息的格式

标签 django django-rest-framework

我想知道是否有人知道为什么 DRF 在错误消息中没有将用户对象的第一个字母大写,有没有简单的方法来纠正这个问题?

创建用户的错误信息:

{
    "password": [
        "This field is required."
    ],
    "email": [
        "user with this email already exists."
    ]
}

模型.py

class User(AbstractBaseUser, PermissionsMixin):

    created = models.DateTimeField(auto_now_add=True) 
    email = models.EmailField(max_length=255, unique=True)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)

    objects = UserManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    def get_full_name(self):

        return self.email

    def get_short_name(self):

        return self.email

    def __str__(self):

        return self.email

序列化器.py

class RegisterUserSerializer(serializers.ModelSerializer):

    class Meta:
        model = models.User
        fields = ('id', 'password', 'email')
        extra_kwargs = {'password': {'write_only': True}}

    def create(self, validated_data):
        user = models.User(email=validated_data['email'])
        user.set_password(validated_data['password'])
        user.save()
        return user

View .py

class UserListView(generics.ListCreateAPIView):
    queryset = User.objects.all()
    def create(self, request, *args, **kwargs):
        serializer = RegisterUserSerializer(data=request.data)
        if serializer.is_valid():
            self.perform_create(serializer)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

最佳答案

最简单的方法是

class User(AbstractBaseUser, PermissionsMixin):

    created = models.DateTimeField(auto_now_add=True) 
    email = models.EmailField(max_length=255, unique=True,error_messages={
                            'unique': "User with this email already exists.",
                        },)
    ...

关于django - DRF 错误消息的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52073160/

相关文章:

python - 如何在Django2网址中以斜线传递参数

django - 从 Django REST Framework 获取未分页的结果

django - DRF 在接收请求时检查 DB 中是否已存在对象

python - DRF - PrimaryKeyRelatedField 中的过滤查询集

python - 尝试访问 Django Rest Framework 中的嵌套序列化程序时出现属性错误

css - 我如何设置我的 Django 表单字段的样式?

python - 如何在django中传递绝对url

python - 如何在 django-rest-framework 的模型 View 集中取消设置 csrf?

python - django:我如何实际覆盖管理站点模板

python - Django 标识符中的无效字符(urls.py,第 5 行)