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'}
我有一个 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'}