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

use*_*774 9 python django

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

本来我去与ClientRequestFactorydjango.test,但这些填充垃圾数据的请求对象,这将导致一些在我看来,动态字段与不正确的值来渲染(例如,之类的东西SERVER_NAME)

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

mod*_*tos 12

首先,我只想澄清你问题中的几个问题:

我正在尝试处理一个视图

通过"处理视图",我认为您的意思是您希望将HttpRequest对象传递到视图的函数中.这通常通过URL调度程序完成.

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

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


看起来你最好的方法是直接使用django.http.HttpRequest对象.您可以按如下方式创建它:

from django.http import HttpRequest
request = HttpRequest()
Run Code Online (Sandbox Code Playgroud)

然后你可以设置你喜欢的字段,request.META它只是一个你可以设置的空字典.例如:

request.method = 'GET'
request.META = myOldRequest.META
request.META['SERVER_NAME'] = 'localhost'
Run Code Online (Sandbox Code Playgroud)

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