首页 > 解决方案 > Django Rest 框架请求验证

问题描述

有没有办法在不编写样板代码的情况下验证随请求传递的参数?现在我有这样的东西:

    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
        )

我读过关于 Serializers' Validation 的文章,但我不确定它是否正确。如果不处理这些异常,Django 只会返回 500,这不是我真正想要的行为。

标签: pythondjangodjango-rest-framework

解决方案


您将最终编写一些样板文件,但您可以通过指定相关字段类型来清理您所拥有的内容,例如使用 anIntegerField可以避免您检查类型,并get_object_or_404在这些情况下为您节省 try/catch。

但是,您真的想为这项工作使用真正正确的字段,并且很可能是Relation 字段PrimaryKeyRelatedField


推荐阅读