我正在编写一个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”?谢谢。
1
只是出于好奇,您是否知道为什么init .py中的代码会执行两次?
—
突变2012年
@Mutant它仅在runserver下执行两次...这是因为runserver首先加载应用程序以检查它们,然后实际启动服务器。即使在自动重载运行服务器时,该代码也只能执行一次。
—
皮克勒
哇,我来过这里。...所以再次感谢您对@Pykler的评论,这就是我想知道的。
—
WesternGun