有没有办法在Django中创建一个包含所有HttpRequest
cgi
个变量的META
对象?我尝试处理视图,但无法弄清楚如何(轻松地)创建请求对象。我只是想确保我没有比手动复制现有请求中的所有字段更难。这个感觉就像现有的解决方案一样,但经过几个小时的搜索后,我无法找到我需要的东西。
我最初使用来自Client
的{{1}}和RequestFactory
,但是这些会使用垃圾数据填充请求对象,这会导致视图中的某些动态字段使用不正确的值进行渲染(例如,django.test
)
是否有正确的方法来创建可用的HttpRequest对象?
答案 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'
我可以让你看看其余的。希望这有帮助!