小编c67*_*754的帖子

为什么 DRF 可浏览 API 对每个实际请求的多个请求类型运行权限检查?

我有一个简单的 DRF 列表视图,想要编写一些与POST请求相关的权限。GET这导致发出请求时出现错误。这让我意识到我的权限类在未提交的请求上被多次调用。这是我的文件。

权限.py:

class IsDummy(permissions.BasePermission):
    def has_permission(self, request, view):
        print("\n{}\n".format(request.method)) 
        if request.method in permissions.SAFE_METHODS:
            return True
        return False
Run Code Online (Sandbox Code Playgroud)

视图.py:

class UserListView(generics.ListCreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    permission_classes = [IsDummy]
Run Code Online (Sandbox Code Playgroud)

仅当我从浏览器向可浏览 api 提交请求时,才会出现此问题。当我在列表 url 提交 GET 请求时,我会从IsDummy权限类中的打印语句将以下内容打印到终端:

GET

POST

POST

OPTIONS
Run Code Online (Sandbox Code Playgroud)

当我通过邮递员提交GETOPTIONS请求时,我会看到我实际使用的单一、适当的请求方法。

似乎列出的第一个方法始终是我使用的实际方法,我不知道额外的POSTs 和 theOPTION来自哪里。更奇怪的是,即使请求POST显然应该IsDummy.has_permission返回一个False.

chrome 开发工具只显示一个GET正在提交的请求,因为它似乎只发生在可浏览的 api 中,我确信它与此有关,但我不知道我搞砸了什么才能实现这种情况。

python django django-rest-framework

4
推荐指数
1
解决办法
822
查看次数

标签 统计

django ×1

django-rest-framework ×1

python ×1