是否可以在不编写样板代码的情况下验证随请求传递的参数?现在我有了类似的东西:
project_id = kwargs['project_id']
try:
project_obj = Project.objects.get(id=project_id)
except Project.DoesNotExist:
return Response(
{'message': 'Requested project does not exist'},
status=status.HTTP_404_NOT_FOUND
)
except ValueError:
return Response(
{'message': 'Project id must be a number'},
status=status.HTTP_400_BAD_REQUEST
)
我已经阅读了有关序列化程序的验证的信息,但是我不确定这是正确的事情。如果不处理这些异常,Django只会返回500,这不是我真正想要的行为。
答案 0 :(得分:1)
您将要编写一些样板文件,但是您可以通过指定相关字段类型来清理自己的内容,例如使用IntegerField
可以节省您检查类型的时间,而get_object_or_404
可以节省您的时间在这些情况下尝试/抓住。
但是,您确实想为该工作使用真实的 right 字段,它将是Relation field,最有可能是PrimaryKeyRelatedField
。