gpt4 book ai didi

django - 如何配置 Django Rest Framework 以返回带有自定义文本的错误

转载 作者:行者123 更新时间:2023-12-05 01:15:47 25 4
gpt4 key购买 nike

我想在向数据库添加新项目时自定义 JSON 响应,它返回以下内容。

HTTP 400 BAD REQUEST 
Content-Type: application/json Vary:
Accept Allow: POST, OPTIONS

{
"nick": [
"Users with this Nick already exists."
]
}


{
"nick": [
"Your username is empty"
]
}

我希望它返回(此用户名已存在,请使用其他用户名。)

或者
"Username %s already exists", (self.nick)

我使用了以下示例,但如果值为空或无效,则不起作用。
def validate_title(self, attrs, source):
"""
Check that the blog post is about Django.
"""
value = attrs[source]
if "django" not in value.lower():
raise serializers.ValidationError("Blog post is not about Django")
return attrs

这是发送到 API 的 JSON。
{
"name": "myname",
"nick":"",
"type_account":"1",
"email":"my-email@gmail.com",
"pass_field":"12345"
}

序列化程序.py
class userSerializer(serializers.ModelSerializer):

class Meta:
model = users
fields = ('nick', 'email', 'pass_field', 'type_account')

def validate_nick(self, attrs, source):

value = attrs[source]
if not value:
raise serializers.ValidationError('Username cannot be empty')
elif self.Meta.model.objects.filter(nick=value).exists():
raise serializers.ValidationError("Username "+value+" is in use")
return attrs

View .py
@api_view(['POST'])
def user_add(request):
"""
Saves a new user on the database
"""

if request.method == 'POST':

serializer = userSerializer(data=request.DATA)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

最佳答案

这个问题的答案还添加了以下内容作为@Fiver 回答

class userLoginSerializer(serializers.ModelSerializer):

nick = serializers.CharField(error_messages={'required':'Please Type a Username'})
pass_field = serializers.CharField(error_messages={'required':'Please Type a Password'})

class Meta:
model = users
fields = ('nick', 'pass_field')

关于django - 如何配置 Django Rest Framework 以返回带有自定义文本的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23642070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com