python - Django REST Framework - 如果不允许查看对象不工作返回错误?
问题描述
我正在为我的一个视图创建自定义 Django Rest Framework 权限,我只希望管理员和对象的所有者能够查看和编辑对象,因为其他人都返回异常错误。但是,如果 request.user 不是管理员或对象的所有者,我无法获得返回错误的自定义权限。
目前我在我的view.py
class ItemQuery(generics.RetrieveUpdateDestroyAPIView):
queryset = Item.objects.all()
serializer_class = ItemSerializer
permission_classes = [IsOwnerOrReadOnly]
lookup_field = 'name'
和我的permissions.py
from rest_framework.views import exception_handler
class IsOwnerOrReadOnly(permissions.basePermission):
def has_object_permission(self, request, view, obj):
if request.method in permissions.SAFE_METHODS:
return True
if obj.id.user = request.user or request.user.is_admin == True:
return True
else:
return False
response = exception-handler(self, request)
response.status_code = 404
return response
解决方案
消除
if request.method in permissions.SAFE_METHODS:
return True
它在您检查所有者或管理员之前返回。
推荐阅读
- php - 发送 REST 数据后如何使用 PHP 标头重定向?
- java - 列表的休眠长度验证器
- node.js - Microsoft Bot Framework V4 Appinsights 相关信息?如何使用 Nodejs 将其用于自定义指标和自定义事件?
- delphi - 代码编辑器无法识别俄语字符
- jquery - 如何增加弹出框宽度
- f# - F#如何正确插入模块引用
- c - '->' 的无效类型参数(有 'struct arr')
- wordpress - Wordpress 我的第一个插件 - 在管理员中显示 - 在前端显示“Hello World”
- c# - 如何使泛型类型始终是泛型类型列表?
- python - Python:检测脚本启动时按下了哪些键盘修饰符(ctrl、shift、alt)(Linux)