大家好我正在尝试将中间件添加到我的应用程序,该应用程序位于此位置
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"
由于
答案 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',
)