Как выдать удобное для пользователя сообщение об ошибке, если валидация не прошла для параметров запроса в django

Я пишу API на Django, и URL имеет вид foo.com/api/places?city_id=123 Так вот, здесь мой query_param - это city_id, и мой API должен принимать только целые числа, если query_param будет отправлен как city_id="xyz", то мой API должен отправить какое-то удобное для пользователя сообщение вместо 500. Могу ли я узнать, как этого добиться в Django?

Вы можете сделать это двумя способами.

Метод 1

Вы можете отправить ответ с кодом ошибки следующим образом

if not request.query_params.get('city_id').isdigit():
    return Response({'message': 'Your message here'}, status=your_error_code_here)

Метод 2

Вы можете сделать сериализатор для проверки параметров запроса.

class ParamValidationSerializer(serializers.Serializer):
    city_id = serializers.IntegerField(error_messages={'invalid': 'Your message here'})
Вернуться на верх