Chcę dostosować odpowiedź JSON podczas dodawania nowego elementu do bazy danych, który zwraca następujące.Jak skonfigurować Django Rest Framework do zwracania błędów z tekstem niestandardowym
HTTP 400 BAD REQUEST
Content-Type: application/json Vary:
Accept Allow: POST, OPTIONS
{
"nick": [
"Users with this Nick already exists."
]
}
i
{
"nick": [
"Your username is empty"
]
}
chcę wrócić (ta nazwa już istnieje, proszę użyć innego.)
lub
"Username %s already exists", (self.nick)
użyłem następujące próbki ale nie działa, jeśli wartość jest pusta lub nieprawidłowa.
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
to JSON, który jest wysyłany do interfejsu API.
{
"name": "myname",
"nick":"",
"type_account":"1",
"email":"[email protected]",
"pass_field":"12345"
}
serializers.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
views.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)
Możesz opublikować modelu gdzie 'nick' jest pole? – Fiver