시작시 한 번만 실행하여 다른 임의의 코드를 초기화하려는 Django Middleware 클래스를 작성 중입니다. 여기 에 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"가 두 번 인쇄되는 이유가 있습니까? 감사.