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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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 RestFrameWork中检索HTTP头_Python_Django_Http Headers_Django Views_Django Rest Framework - Fatal编程技术网

Python 在Django RestFrameWork中检索HTTP头

Python 在Django RestFrameWork中检索HTTP头,python,django,http-headers,django-views,django-rest-framework,Python,Django,Http Headers,Django Views,Django Rest Framework,我正在使用django rest框架实现一个小功能,它为我们的合作伙伴提供一个API来访问一些数据。后端已经编写好了,我编写API只是为了利用它来获取一些数据,所以我只是使用基于函数的视图来简化事情。以下是我的测试代码: @api_view(['GET']) @authentication_classes((BasicAuthentication,)) @permission_classes((IsAuthenticated,)) def get_key(request): userna

我正在使用django rest框架实现一个小功能,它为我们的合作伙伴提供一个API来访问一些数据。后端已经编写好了,我编写API只是为了利用它来获取一些数据,所以我只是使用基于函数的视图来简化事情。以下是我的测试代码:

@api_view(['GET'])
@authentication_classes((BasicAuthentication,))
@permission_classes((IsAuthenticated,))
def get_key(request):
    username = request.user.username
    enc = encode(key, username)
    return Response({'API_key': enc, 'username': username}, status=status.HTTP_200_OK)

@api_view(['GET'])
def get_data(request):
    user = request.user
    API_key = request.META.get('Authorization') # the value is null
    return Response({'API_key': API_key})
因此,登录用户首先通过调用
get\u key(request)
获取API密钥。然后他使用API键来获取数据。问题是我无法检索放入
授权
标题中的密钥:

headers = {'Authorization': 'yNd5vdL4f6d4f6dfsdF29DPh9vUtg=='}
r = requests.get('http://localhost:8000/api/getdata', headers=headers)

所以我想知道如何在django rest框架中获取头字段

您需要查找
HTTP\u AUTHORIZATION
键,而不是
AUTHORIZATION
,因为Django在头名称后面附加了
HTTP\u
前缀。

从Django文档开始

除了
CONTENT\u LENGTH
CONTENT\u TYPE
之外,任何HTTP 请求中的标头由 将所有字符转换为大写,将任何连字符替换为 下划线,并在名称中添加一个HTTP_uuu.前缀。例如,一个 名为
X-Bender
的标题将映射到元键
HTTP\u X\u Bender

因此,要检索API密钥,您需要执行以下操作:

API_key = request.META.get('HTTP_AUTHORIZATION')

您需要查找
HTTP\u AUTHORIZATION
键,而不是
AUTHORIZATION
,因为Django在头名称后面附加
HTTP\u
前缀。

从Django文档开始

除了
CONTENT\u LENGTH
CONTENT\u TYPE
之外,任何HTTP 请求中的标头由 将所有字符转换为大写,将任何连字符替换为 下划线,并在名称中添加一个HTTP_uuu.前缀。例如,一个 名为
X-Bender
的标题将映射到元键
HTTP\u X\u Bender

因此,要检索API密钥,您需要执行以下操作:

API_key = request.META.get('HTTP_AUTHORIZATION')