如何在django rest framework权限中获取param PK?

How to get the param PK in django restframework permission?

我在 Django 中有这样的权限:

class PermissionName(BasePermission):
    

    def has_object_permission(self, request, view, obj):

        if request.method in SAFE_METHODS:
            return True
        #I want to extract the pk or id params in here.

        return False

任何人都可以帮助我获取我尝试使用 self.kwargs["pk"]request.POST['pk'] 的请求参数,但他们都 return 说对象没有属性。

如果 pk 是 POST 请求的参数,您可以使用 request.POST.get('pk') 访问它。在您的 post 中,您没有使用 get(),所以这可能是问题所在。

如果对象作为参数提供给函数,我假设您需要它的 ID。这也可以通过 obj.id.

来实现

假设你的路径是:

path('listings/get/category/<str:pk>/', endpoints.HousesWithSameCategory.as_view()),

您的要求:api/listings/get/category/1/

在您的 class 方法视图中使用:

def get_queryset(self):
    print(self.kwargs)

这将 return {'pk': '1'}

self.kwargs 将 return 您所有的动态参数