Python 在Django RestFrameWork中检索HTTP头
我正在使用django rest框架实现一个小功能,它为我们的合作伙伴提供一个API来访问一些数据。后端已经编写好了,我编写API只是为了利用它来获取一些数据,所以我只是使用基于函数的视图来简化事情。以下是我的测试代码: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
@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')