如果 Django 中的查询参数验证失败,如何抛出用户友好的错误消息

how to throw user friendly error message if validation fails for query params in django

我正在用 Django 编写 API,而 URL 类似于 foo.com/api/places?city_id=123 所以,这里我的 query_param 是 city_id,而我的 API 应该只接受整数,如果 query_param 作为 city_id="xyz" 发送,那么我的 API 需要发送一些用户友好的消息而不是 500。 我可以知道如何在 Django 中实现吗?

您可以通过两种方式执行此操作。

方法一

您可以像这样发送带有错误代码的响应

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

方法二

您可以制作一个序列化程序来验证查询参数。

class ParamValidationSerializer(serializers.Serializer):
    city_id = serializers.IntegerField(error_messages={'invalid': 'Your message here'})