Python-仅在Django启动一次时执行代码?

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

from django.core.exceptions import MiddlewareNotUsed

from django.conf import settings

class StartupMiddleware(object):

def __init__(self):

print "Hello world"

raise MiddlewareNotUsed('Startup complete')

在我的Django设置文件中,该类已包含在MIDDLEWARE_CLASSES列表中。

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

Django version 1.3, using settings 'config.server'

Development server is running at http://127.0.0.1:8000/

Quit the server with CONTROL-C.

Hello world

[22/Jul/2011 15:54:36] "GET / HTTP/1.1" 200 698

Hello world

[22/Jul/2011 15:54:36] "GET /static/css/base.css HTTP/1.1" 200 0

有什么想法为什么要打印两次“ Hello world”?谢谢。

回答:

从以下Pykler的答案进行更新:Django 1.7现在对此具有钩子

不要这样

你不希望一次性使用“中间件”。

你要在顶层执行代码urls.py。该模块将被导入并执行一次。

urls.py

from django.confs.urls.defaults import *

from my_app import one_time_startup

urlpatterns = ...

one_time_startup()

以上是 Python-仅在Django启动一次时执行代码? 的全部内容, 来源链接: utcz.com/qa/434025.html

回到顶部