Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Rest框架出现错误:您没有执行此操作的权限_Python_Django_Django Rest Framework - Fatal编程技术网

Python Django Rest框架出现错误:您没有执行此操作的权限

Python Django Rest框架出现错误:您没有执行此操作的权限,python,django,django-rest-framework,Python,Django,Django Rest Framework,我按照教程检查api\u key头是否存在。该示例似乎用于身份验证,我无法确定如何修复它。当我访问API端点时,我得到一个错误: { "detail": "You do not have permission to perform this action." } permisson.py 从rest\u framework.permissions导入BasePermission class Check_API_KEY_Auth(BasePermi

我按照教程检查
api\u key
头是否存在。该示例似乎用于身份验证,我无法确定如何修复它。当我访问API端点时,我得到一个错误:

{
    "detail": "You do not have permission to perform this action."
}
permisson.py

从rest\u framework.permissions导入BasePermission

class Check_API_KEY_Auth(BasePermission):
    def has_permission(self, request, view):
        # API_KEY should be in request headers to authenticate requests
        api_key_secret = request.META.get('API_KEY')
        if 'api_key' in request.headers:
            api_key_secret = request.headers['api_key']
            if api_key_secret == 'adnan':
                print('FOUND')

        return api_key_secret == 'you'
views.py

from rest_framework import viewsets

from .models import App
from .serializers import AppSerializer
from rest_framework.decorators import action
from rest_framework.response import Response
from .permissions import Check_API_KEY_Auth


class AppView(viewsets.ModelViewSet):
    queryset = App.objects.all()
    permission_classes = (Check_API_KEY_Auth,)
    serializer_class = AppSerializer

    def show(self, request, format=None):
        content = {
            'status': 'request was permitted'
        }
        return Response(content)

我不需要用户身份验证,只需检查API密钥是否存在,如果是,则查询表中的db并返回结果。

如果
权限类中的所有权限都返回
True
,则django rest framework授予权限,如果列表中的任何一个返回
False
,则权限被拒绝

查看
Check\u API\u KEY\u Auth
类后,返回
True
的唯一情况是URL中的
API\u KEY=you
,否则它将始终返回
False
,这就是为什么URL中没有
API\u KEY
时,它会给出此错误消息的原因

本教程中的一个是最短的,它将
api\u key\u secret==settings.api\u key\u secret
的输出直接返回到视图,该视图只返回
True
False