我需要得到所有的Django请求头.据我所知,Django只是将所有内容连同许多其他数据一起转储到request.META变量中.获取all客户端发送到我的Django应用程序的标头的最佳方式是什么?

我将使用这些来构建一个httplib请求.

推荐答案

根据documentation request.META,它是一个"包含所有可用HTTP头的标准Python字典".如果你想得到all个标题,你可以简单地遍历字典.

代码的哪个部分执行此操作取决于您的确切要求.任何可以进入request的地方都应该可以.

Update

我需要在中间件类中访问它,但是当我迭代它时,除了HTTP头之外,我还得到了很多值.

从文档中可以看到:

除了CONTENT_LENGTHCONTENT_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_'))

Django相关问答推荐

如何在Django查询集中查询多对多字段内是否存在实例

无法在views.py django中验证密码

如何保护单个数据库行/模型实例?

为什么在 Docker 映像中运行我的 Django 应用程序后下载属性不再起作用?

为什么 django 不能相互识别 2 个路径转换器?

如何根据反向外键相关模型的字段过滤 QuerySet?

相同的字符串不同的翻译

我的 django 模板布尔变量在 javascript 中没有按预期工作

如何在 forms.Form 子类上动态设置 models.ModelChoiceField 的查询集

如何获取 Django 模型来自的应用程序?

Django 1.9 中 django.db.models.loading.get_model() 的类似功能是什么?

在 django admin 中创建对象时如何自动插入当前用户?

django.core.exceptions.ImproperlyConfigured:请求设置 USE_I18N,但未配置设置

related_name 参数在 Django 模型中没有按预期工作?

ImportError:升级到 Django 4.0 后无法从 'django.conf.urls' 导入名称 'url'

django 模板中对象的模型名称

现在如何在 Django 中处理每个对象的权限?

Celery - 在一台服务器上运行不同的工作人员

如何测试 Django QuerySets 是否相等?

django.db.utils.OperationalError 无法连接到服务器