Django - 如何访问视图之外的请求对象?
Posted
技术标签:
【中文标题】Django - 如何访问视图之外的请求对象?【英文标题】:Django - How do I access request object outside views? 【发布时间】:2017-04-06 17:13:18 【问题描述】:我在app
目录中有一个名为utilities.py
的文件,其中包含特定于我的应用程序的小实用程序功能。我将从views.py
调用这些函数。问题是某些实用程序函数需要访问request
对象。
有没有办法在视图之外使用request
对象而不将其作为参数传递给实用函数?
【问题讨论】:
不要这么认为...... 你为什么不想使用参数? 我想更改一些遗留代码,并将请求作为参数传递,需要大量工作吗?有没有其他办法? 找到并实施一种解决方法,这样您就不必使用参数,这也需要大量工作,并最终导致更糟糕的解决方案。 【参考方案1】:我已经自定义了 Context
类,我在 Django 中间件中对其进行了初始化,并将链接放入 request
对象。
两件重要的事情:
Context
类必须继承 threading.local
以防止在多线程中运行应用时请求泄漏。
将Context
设为单例。为此,我使用了 Singleton 元类。
所以,这样做你可以在代码的任何部分简单地通过这个调用来获取 Django 请求对象:
request = Context().request
【讨论】:
以上是关于Django - 如何访问视图之外的请求对象?的主要内容,如果未能解决你的问题,请参考以下文章