Django只启动一次时执行代码?

我正在编写一个Django中间件类,我只想在启动时执行一次,以初始化其他任意代码。我遵循了sdolan在这里发布的非常好的解决方案,但是“Hello”消息会被输出到终端两次。例如

来自django.core.exceptions的

导入MiddlewareNotUsed
从django.conf导入设置
类启动中间件(对象):
定义初始化(自):
打印“Hello world”
提升MiddlewareNotUsed('启动完成')

在我的Django设置文件中,MIDDLEWARE\u CLASSES列表中包含了这个类

但是当我使用runserver运行Django并请求一个页面时,我进入了终端

Django 1.3版,使用“config.server”设置
开发服务器正在运行http://127.0.0.1:8000/
使用CONTROL-C退出服务器。
你好,世界
[22/Jul/2011 15:54:36]“GET/HTTP/1.1”200 698
你好,世界
[22/Jul/2011 15:54:36]“GET/static/css/base.css HTTP/1.1”200 0

你知道为什么“Hello world”会被打印两次吗?谢谢

更新:Django1.7现在有了一个钩子

文件:myapp/apps.py

来自django.apps的

导入AppConfig
类MyAppConfig(AppConfig):
名称='myapp'
verbose_name=“我的应用程序”
def就绪(自我):
在此处传递启动代码

文件:myapp/\uuuuu init\uuuuu.py

默认应用程序配置='myapp.apps.MyAppConfig'

对于Django<1.7

第一个答案似乎不再有效,URL.py在第一个请求时加载

最近的工作是将启动代码放入任何一个已安装的应用程序init.py中,例如myapp/\uuuuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

def startup():
传一个大东西
启动()

使用/manage.py运行服务器时。。。这将执行两次,但这是因为runserver有一些技巧来首先验证模型,等等。。。正常部署,甚至在runserver自动重新加载时,这只执行一次

发表评论