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

Mas*_*sza 4 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...
Run Code Online (Sandbox Code Playgroud)

许可就像

class MyCustomPermission(BasePermission):
    def has_permission(self, request, view, *args, **kwargs):
    # code
Run Code Online (Sandbox Code Playgroud)

如何访问idMyCustomPermission?我无法从request或从*args或找到它*kwargs。文档对此没有任何说明。我试图查看源代码,但是找不到如何访问那些命名的url参数。可能吗

Dan*_*man 6

这是错误的方法。而不是尝试在那里访问关键字参数,您应该使用对象级权限并签has_object_permission入权限类。


Nad*_*oul 6

你可以在...里找到它们:

request.resolver_match.kwargs.get('attribute_name')
Run Code Online (Sandbox Code Playgroud)


ama*_*mar 5

您可以从view.kwargs访问。