如何在设置文件中设置django中间件

时间:2013-07-29 02:29:43

标签: django

大家好我正在尝试将中间件添加到我的应用程序,该应用程序位于此位置

myapp/sitemanager/middleware/__init__.py
myapp/sitemanager/middleware/redirects.py

在我的settings.py文件中声明它的正确方法是什么。我目前以这种方式设置

MIDDLEWARE_CLASSES = ("sitemanager.middleware.redirects.SiteDetectionMiddleware")

但我一直在犯这个错误

ImproperlyConfigured: Error importing middleware sitemanager.middleware.redirects: "cannot     import name Address"

由于

1 个答案:

答案 0 :(得分:0)

您需要确保正确配置了Python路径。 假设(在您的项目中)您的目录结构类似于: Django 1.4

/mysite
/mysite/mysite #defult settings.py gonna here...
/mysite/apps
/mysite/apps/__init__.py
/mysite/apps/main
/mysite/apps/main/__init__.py
/mysite/apps/main/models.py
/mysite/apps/main/views.py
/mysite/apps/main/middleware/__init__.py
/mysite/apps/main/middleware/log.py

这是我简单的midlleware logger例程(在log.py中):

from django.http import HttpRequest
import datetime

class Logger(object):
    def process_request(self, request):
        f = open('/tmp/log.txt', 'w')            
        f.write(str(datetime.datetime.now()))

请注意,我的自定义中间件类(在log.py中)位于我的中间件python包下,位于 main app下。

所以,你应该输入你的settings.py:

import sys
sys.path.append(MY_PROJECT_ROOT)

和中间件元组:

MIDDLEWARE_CLASSES = (
'...', 
'apps.main.middleware.log.Logger',
)