gpt4 book ai didi

python - 无法在没有 `.queryset` 属性或覆盖 `.get_queryset()` 方法的 View 上应用 DjangoModelPermissions

转载 作者:IT老高 更新时间:2023-10-28 20:29:29 38 4
gpt4 key购买 nike

我收到错误“.accepted_renderer not set on Response resp api django”。

我正在关注 django rest-api 教程。我使用的 Django 版本 1.8.3我按照教程直到第一部分。它工作正常。但是当我继续发送响应的第二部分时,我得到了一个错误

Cannot apply DjangoModelPermissions on a view that does not have `.queryset` property or overrides the `.get_queryset()` method.

然后我尝试了其他方法我得到了

.accepted_renderer not set on Response resp api django

请帮帮我。我认为它的权限问题。

最佳答案

您可能已在设置中将 DjangoModelPermissions 设置为默认权限类。比如:

REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.DjangoModelPermissions',
)
}

DjangoModelPermissions 只能应用于具有 .queryset 属性或 .get_queryset() 方法的 View 。

由于教程 2 使用 FBV,您可能需要将其转换为 CBV,或者一种简单的方法是为该 View 指定不同的权限类。您必须在 View 中使用 api_view 装饰器。然后您可以定义 permissions 如下:

from rest_framework.decorators import api_view, permission_classes
from rest_framework import permissions

@api_view([..])
@permission_classes((permissions.AllowAny,))
def my_view(request)
...

要解决渲染器错误,您需要在设置中添加相应的渲染器。

REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.<corresponding_renderer>',
...
)
}

关于python - 无法在没有 `.queryset` 属性或覆盖 `.get_queryset()` 方法的 View 上应用 DjangoModelPermissions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31335736/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com