Him*_*shu 6 python django django-views django-database
我想在Django启动时初始化一些变量(来自数据库).
我能够从数据库中获取数据,但问题是如何调用initialize方法.这应该只调用一次.
尝试查看其他页面,但无法找到答案.
代码目前看起来像这样::
def get_latest_dbx(request,....):
#get数据库中的数据
def get_latest_x(request):
get_latest_dbx(请求中,x,......)
def启动(请求):
get_latest_x(请求)
有人建议(仅在Django启动时才执行代码?)在顶层urls.py中调用初始化(这看起来很不寻常,因为urls.py应该处理url模式)。编写中间件还有另一种解决方法:将Django启动代码放在哪里? 但我相信大多数的人都在等待券来解决。
更新:
由于OP更新了问题,所以似乎中间件方法可能更好,因为他实际上request在启动时需要一个对象。所有启动代码都可以放在自定义中间件的process_request方法中,其中request第一个参数中包含object。这些启动代码执行后,可能会设置一些标志以避免以后再次运行它们(引发MiddlewareNotUsed异常仅在中有效__init__,而不会接收自request变量)。
顺便说一句,OP的要求看起来有点奇怪。一方面,他需要在Django启动时初始化一些变量,另一方面,他需要request初始化中的对象。但是当Django启动时,可能根本没有传入请求。即使有一个,也没有多大意义。我想他实际上需要为每个会话或用户进行一些初始化。
| 归档时间: |
|
| 查看次数: |
6706 次 |
| 最近记录: |