Django 输入 request.META 到请求 headers?

Django input request.META into requests headers?

我有一个 Django 应用程序,我想在其中从我自己的网站获取一个页面,并通过传递请求的 headers 和 cookie 来模拟客户端请求。

middleware.py

r = requests.get('https://google.com', None, headers=request.META, cookies=request.COOKIES)

但是,我注意到在 Django 中 request.META 是大写的,并且使用下划线而不是连字符。虽然 request.COOKIES returns 是空的,这让我相信它们不会出现在中间件中?

我是不是遗漏了什么,这似乎很令人沮丧,因为 requests 是一个如此受欢迎的库,而 Django 是一个如此受欢迎的框架。

你确定你设置的cookie正确吗?我用一小块自定义中间件对此进行了测试,并且 request.COOKIES 存在 cookie。这是我的观点:

def test(request):
    response = HttpResponse('test')
    response.set_cookie('foo', 'bar')
    return response

然后,在我的自定义中间件中使用 ipdb 设置断点后:

class MyMiddleware(object):

    def process_request(self, request):
        import ipdb; ipdb.set_trace()

我可以看到设置好的 cookie:

ipdb> request.COOKIES
{'foo': 'bar'}