0

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

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"

谢谢

4

1 回答 1

1

你要确保你的 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

这是我的简单中间件记录器示例(在 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 包下,即在应用程序下。

因此,您应该在 settings.py 中输入如下内容:

import sys
sys.path.append(MY_PROJECT_ROOT)

在中间件元组中:

MIDDLEWARE_CLASSES = (
'...', 
'apps.main.middleware.log.Logger',
)
于 2013-07-29T03:31:33.010 回答