如何使用Django REST Framework访问权限中的命名url参数?

时间:2017-11-15 10:51:36

标签: django django-rest-framework

我有一个像

这样的网址配置

url(r'^user/(?P<id>[0-9]+)/$', UserView.as_view())

这样的视图类
class UserView(GenericAPIView):
    serializer_class = UserSerializer
    permission_classes = [MyCustomPermission]

    def get(self, request, id):
        # code...

许可就像

class MyCustomPermission(BasePermission):
    def has_permission(self, request, view, *args, **kwargs):
    # code

如何访问id中的MyCustomPermission?我无法从request*args*kwargs找到它。文档没有说明这一点。我试图查看源代码,但无法找到如何访问这些命名的url参数。它甚至可能吗?

3 个答案:

答案 0 :(得分:3)

这是错误的做法。您应该使用object-level permissions并在权限类中检查has_object_permission,而不是尝试在那里访问关键字参数。

答案 1 :(得分:3)

您可以从view.kwargs访问。

答案 2 :(得分:0)

您可以在以下位置找到它们:

request.resolver_match.kwargs.get('..')