需要时访问django请求对象
django-contrib-requestprovider的Python项目详细描述
说明
gadjo.requestprovider允许访问django的httprequest 对象,而不是显式地将其传递到 代码。
用法
将gadjo的requestprovider中间件添加到django的设置中。py:
中间件类=( 'gadjo.requestprovider.middleware.requestprovider', … )
无论何时您需要请求对象(从您的模型、窗体等):
从gadjo.requestprovider.signals导入get_请求
http_request=get_request()
实施细节
除了保存对当前请求的引用外,requestprovider 中间件还将自己注册为任何人的接收器 需要请求对象。
当发出get_request()时,将调用中间件来处理 发出信号并返回请求对象。 这是因为django中的信号是同步处理的。 get_request()对请求访问器singlehandlersignal(signal)调用send() 对象并将当前请求返回给调用方。 单handlersignal是确保它只注册的信号 授权接收人。这是为了确保没有人会注册处理程序 (可能是错误的)请求访问器信号,因为这应该是 仅由我们的requestprovider中间件处理。
类单手柄信号(信号):
allowed_receiver=’gadjo.requestprovider.middleware.RequestProvider’
信号的connect()方法被重写为只允许注册 接受者。
待办事项
无
注
这不是线程安全的。但是,如果你在线程环境中运行django应用程序,我认为你并不真正知道自己在做什么。