【问题标题】:How to get the param PK in django restframework permission?如何在 django rest 框架权限中获取参数 PK?
【发布时间】:2021-11-13 14:17:16
【问题描述】:

我在 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'] 的请求参数,但他们都返回说对象没有属性。

【问题讨论】:

  • 既然给你对象,obj.pk?
  • pk 或 id 是什么?
  • @WillemVanOnsem 有效,谢谢!

标签: python django django-rest-framework django-permissions


【解决方案1】:

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

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

【讨论】:

  • 我尝试使用 'request.POST.get('pk')' 但它在 Pdb 中没有显示任何内容。
【解决方案2】:

假设你的路径是:

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

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

在你的类方法视图中使用:

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

这将返回{'pk': '1'}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 2017-04-13
    • 2016-11-20
    • 2014-08-25
    • 2016-01-25
    • 2021-09-04
    • 2019-07-13
    相关资源
    最近更新 更多