Django Rest框架请求验证

时间:2019-05-23 19:38:00

标签: python django django-rest-framework

是否可以在不编写样板代码的情况下验证随请求传递的参数?现在我有了类似的东西:

    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,这不是我真正想要的行为。

1 个答案:

答案 0 :(得分:1)

您将要编写一些样板文件,但是您可以通过指定相关字段类型来清理自己的内容,例如使用IntegerField可以节省您检查类型的时间,而get_object_or_404可以节省您的时间在这些情况下尝试/抓住。

但是,您确实想为该工作使用真实的 right 字段,它将是Relation field,最有可能是PrimaryKeyRelatedField