我在utilities.py
目录中有一个名为app
的文件,其中包含特定于我的应用的小型实用程序功能。我将从views.py
调用这些函数。问题是某些实用程序功能需要访问request
对象。
是否有任何方法可以在视图外部使用request
对象而不将其作为实用程序函数的参数传递?
我制作了自定义Context
类,该类在Django中间件中初始化,并将链接放置到request
对象。
关于以下两个重要事项:
Context
类必须继承threading.local
,以防止在多个线程中运行应用程序时导致请求泄漏。Context
设为单例。我为此使用了Singleton元类。因此,您可以通过在代码的任何部分进行此调用来简单地获取Django请求对象:
request = Context().request