python - 如何为 DRF 中的方法设置不同的权限类
问题描述
我有类似的看法:
from django.http import HttpResponse
from rest_framework import generics
class MyView(generics.ListCreateAPIView):
def get_queryset(self):
# <view logic>
return HttpResponse('result')
def post(self, request):
# <view logic x2>
return HttpResponse('message_post_template')
而且我希望 GET 请求具有权限类,IsAuthenticated
而 POST 请求应该具有HasAPIKey
来自Django REST Framework API Key的权限类。我怎样才能做到这一点?
我尝试过这样做permission_classes = [IsAuthenticated | HasAPIKey]
,但这太宽松了,因为如果所需权限以外的其他权限可用,它将允许功能工作。
解决方案
from django.http import HttpResponse
from rest_framework import generics
class MyView(generics.ListCreateAPIView):
def get_permissions(self):
method = self.request.method
if method == 'POST':
return [HasAPIKey()]
else:
return [IsAuthenticated()]
def get_queryset(self):
# <view logic>
return HttpResponse('result')
def post(self, request):
# <view logic x2>
return HttpResponse('message_post_template')
推荐阅读
- arrays - 如何根据 Google 表格中另一个单元格中的值填充单元格(高级?)
- ios - 如何让我的电脑麦克风在按下按钮时工作?-- Xcode 11
- javascript - Edge 和 canvas.toDataUrl() 给出不正确/截断的值;
- javascript - 尝试加载大视频但收到“503 服务不可用”
- jquery - 如何检查 div 中的段落数并使用 jQuery 删除其中一些?
- video-streaming - getUserMedia 如何提高音频质量?如何使音频停止回声?
- vue.js - 如何使用 VueJS 以编辑形式获取旧图像?
- c - 在函数或文件中声明 const 变量?
- c++ - C++ 目录列表表现得很奇怪
- reactjs - 提交表单后 React Redirect 不重定向