我需要得到所有的Django请求头.据我所知,Django只是将所有内容连同许多其他数据一起转储到request.META
变量中.获取all客户端发送到我的Django应用程序的标头的最佳方式是什么?
我将使用这些来构建一个httplib
请求.
我需要得到所有的Django请求头.据我所知,Django只是将所有内容连同许多其他数据一起转储到request.META
变量中.获取all客户端发送到我的Django应用程序的标头的最佳方式是什么?
我将使用这些来构建一个httplib
请求.
根据documentation request.META
,它是一个"包含所有可用HTTP头的标准Python字典".如果你想得到all个标题,你可以简单地遍历字典.
代码的哪个部分执行此操作取决于您的确切要求.任何可以进入request
的地方都应该可以.
Update个
我需要在中间件类中访问它,但是当我迭代它时,除了HTTP头之外,我还得到了很多值.
从文档中可以看到:
除了
CONTENT_LENGTH
和CONTENT_TYPE
之外,如上所述,通过将所有字符转换为大写,用下划线和adding an 104 prefix to the name替换任何连字符,请求中的任何HTTP
个标题都将转换为META
个键.
(重点补充)
要单独获取这HTTP
个头文件,只需通过带有前缀HTTP_
的键来过滤即可.
Update 2
您能告诉我如何通过过滤掉request.META变量中所有以HTTP_开头并go 掉前导HTTP_PART的键来构建标题字典吗?
好的.这里有一种方法可以做到这一点.
import re
regex = re.compile('^HTTP_')
dict((regex.sub('', header), value) for (header, value)
in request.META.items() if header.startswith('HTTP_'))