起動時に1回だけ実行して、他の任意のコードを初期化したいDjango Middlewareクラスを書いています。ここでは、sdolanが投稿した非常に優れた解決策に従っていますが、「Hello」メッセージが端末に2回出力されます。例えば
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」が2度印刷される理由はありますか?ありがとう。