如何在填充META字段的情况下创建Django HttpRequest对象?

时间:2015-01-28 00:36:21

标签: python django

有没有办法在Django中创建一个包含所有HttpRequest cgi个变量的META对象?我尝试处理视图,但无法弄清楚如何(轻松地)创建请求对象。我只是想确保我没有比手动复制现有请求中的所有字段更难。这个感觉就像现有的解决方案一样,但经过几个小时的搜索后,我无法找到我需要的东西。

我最初使用来自Client的{​​{1}}和RequestFactory,但是这些会使用垃圾数据填充请求对象,这会导致视图中的某些动态字段使用不正确的值进行渲染(例如,django.test

之类的东西

是否有正确的方法来创建可用的HttpRequest对象?

1 个答案:

答案 0 :(得分:10)

首先,我想在你的问题中澄清一些事情:

  

我正在尝试处理视图

通过“处理视图”,我认为您的意思是您希望将HttpRequest对象传递到视图的函数中。这通常通过URL dispatcher完成。

  

我只是想确保我的生活更加艰难,而不是手动复制现有请求中的所有字段。

听起来你想根据现有的请求创建一个新的HttpRequest对象,特别是不要弄乱标题。您应该查看django.http.HttpRequest文档以重新使用现有请求字段中的某些字段。例如,request.META是一个可以在请求对象之间重用的字典。

似乎您最好的方法是直接使用django.http.HttpRequest对象。您可以按如下方式创建它:

from django.http import HttpRequest
request = HttpRequest()

然后你可以随意设置字段,而request.META只是一个你可以设置的空字典。例如:

request.method = 'GET'
request.META = myOldRequest.META
request.META['SERVER_NAME'] = 'localhost'

我可以让你看看其余的。希望这有帮助!