加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Django:当django启动时只调用一次方法

发布时间:2020-12-16 21:56:21 所属栏目:Python 来源:网络整理
导读:我想在Django启动时初始化一些变量(来自数据库). 我能够从数据库中获取数据,但问题是如何调用initialize方法.这应该只调用一次. 尝试查看其他页面,但无法找到答案. 代码目前看起来像这样:: def get_latest_dbx(request,.): #get数据库中的数据 def get_late

我想在Django启动时初始化一些变量(来自数据库).

我能够从数据库中获取数据,但问题是如何调用initialize方法.这应该只调用一次.

尝试查看其他页面,但无法找到答案.

代码目前看起来像这样::

def get_latest_dbx(request,….):

#get数据库中的数据

def get_latest_x(request):

get_latest_dbx(请求中,x,……)

def启动(请求):

get_latest_x(请求)

最佳答案
有些人建议(Execute code when Django starts ONCE only?)调用顶级urls.py中的初始化(看起来不寻常,因为urls.py应该处理url模式).编写中间件还有另一种解决方法:Where to put Django startup code?
但我相信大多数人都在等待ticket的解决.

更新:

由于OP已经更新了问题,似乎中间件方式可能更好,因为他实际上需要启动时的请求对象.所有启动代码都可以放在自定义中间件的process_request方法中,其中请求对象在第一个参数中可用.在执行这些启动代码之后,可以设置一些标志以避免以后重新运行它们(提高MiddlewareNotUsed异常仅适用于__init__,它不接收请求参数).

BTW,OP的要求看起来有点奇怪.一方面,他需要在Django启动时初始化一些变量,另一方面,他需要初始化中的请求对象.但是当Django启动时,可能根本没有传入请求.即使有一个,也没有多大意义.我想他实际需要的可能是为每个会话或用户做一些初始化.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读