我收到错误“.accepted_renderer未在响应响应API django上设置”。
我正在学习django rest-api教程。我使用的是1.8.3版本的Django。我一直学习到第一部分。它工作正常。但是当我继续第二部分发送响应时,我得到了一个错误
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
请帮帮我。我想是许可问题。
8条答案
按热度按时间9rygscc11#
您可能已经在设置中将
DjangoModelPermissions
设置为默认权限类。DjangoModelPermissions
只能应用于具有.queryset
属性或.get_queryset()
方法的视图。由于教程2使用了FBV,你可能需要将其转换为CBV,或者一个简单的方法是为该视图指定一个不同的权限类。你必须在视图中使用
api_view
装饰器。然后你可以像下面这样定义permissions
:若要解决渲染器错误,需要将相应的渲染器添加到设置中。
3qpi33ja2#
我用另一种方式让它工作。我登录的用户是我创建的超级用户。所以我从管理员创建了另一个用户,使他成为员工用户,并提供所有权限。然后登录到管理员由该用户。
在settings.py文件中,我更改了代码。
而且奏效了。
x6492ojm3#
在我的例子中,(对于教程2,
djangorestframework
ver 3.7.7),当我将设置更改为:disho6za4#
我的解决方案是上面@ProfNandaa指出的。
快速修复,现在注解掉'rest_framework.renders.DjangoModelPermissions'行--如果你正在学习DRF教程2;也许您已经在settings.py的主页示例中添加了它。
在开始教程之前,我确实从主页示例中添加了这一点,并遇到了同样的问题。
当我注解掉有问题的代码时
从www.example.com上settings.py,一切又恢复正常了。
fcwjkofz5#
这里已经列出了很多好的解决方案。我在第二个教程中也遇到了同样的问题。它显示:
无法对未设置
.queryset
或具有.get_queryset()
方法的视图应用DjangoModelPermissionsOrAnonReadOnly。我更改了
settings.py
以排除DEFAULT_PERMISSION_CLASSES
,如下所示:然后它成功地运行。我尝试了这个之前,我已经找到了这些答案。
5lhxktic6#
从Django Rest Framework的文档中,你可以将其添加到视图中:
queryset = User.objects.none()
7eumitmz7#
对于测试,您可以使用
此设置默认为允许无限制访问。Documentions
ippsafx78#
如果你使用的是@app_view,那么你只需要删除这个部分: