django - 授权和非授权用户的 1 个视图的 DRF 自定义权限
问题描述
想法是非身份验证用户只能 GET(list,retrieve) 视图。Auth 用户可以 GET、POST、PATCH、DELETE。
我怎样才能在自定义权限中做到这一点?
我的观点:
class BookViewSet(viewsets.ModelViewSet):
permission_classes = (IsAuthenticated,)
serializer_class = serializers.BookSerializer
def get_queryset(self):
return Book.objects.filter(user=self.request.user)
解决方案
您可以通过扩展基类来做到这一点permissions.BasePermission
from rest_framework import permissions
class IsAuthorOrReadOnly(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
if request.method in permissions.SAFE_METHODS:
return True
return obj.user == request.user
然后将其用作权限类permission_classes =(IsAuthorOrReadOnly,)
推荐阅读
- python - 在 python 中的命令中添加定义
- ibm-mq - 我如何知道 IIB 中的 LASTMOVE 何时返回 true 或 false?
- javascript - 在 React 中删除 Firestore 的文档后,它应该从屏幕上消失。并在编辑文档时立即更新
- ruby-on-rails - Simple Form + Select2:无法输入动态标签
- laravel - 如何向与通常端口不同的 api 发出请求
- python - AttributeError:模块“tensorflow_federated.python.simulation”没有属性“HDF5ClientData”
- javascript - 如何在 React 中使用函数编辑字符串
- c# - 带有 nx monorepo 的 Azure Pipelines 警告
- java - Google reCaptcha 是否足以防止暴力攻击?
- windows - 测量按名称分组的 Windows 任务的执行时间