Python 如何在设置文件中设置django中间件
大家好,我正在尝试将中间件添加到我的应用程序中,该应用程序位于此位置Python 如何在设置文件中设置django中间件,python,django,Python,Django,大家好,我正在尝试将中间件添加到我的应用程序中,该应用程序位于此位置 myapp/sitemanager/middleware/__init__.py myapp/sitemanager/middleware/redirects.py 在我的settings.py文件中声明它的正确方式是什么。我目前将它设置为这种方式 MIDDLEWARE_CLASSES = ("sitemanager.middleware.redirects.SiteDetectionMiddleware") 但我一直在犯
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"
谢谢您可以确保正确配置了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中):
请注意,我的自定义中间件类(在log.py中)位于我的中间件python包下,即主应用程序下
因此,您应该在settings.py中输入如下内容:
import sys
sys.path.append(MY_PROJECT_ROOT)
在中间件元组中:
MIDDLEWARE_CLASSES = (
'...',
'apps.main.middleware.log.Logger',
)
假设
myapp
和sitemanager
是实际的Python包(包含\uuuu init\uuuuu.py
),并且在PYTHONPATH中,您可能会遇到循环导入问题。注释掉中间件模块中的所有代码,然后逐个取消顶层导入的注释。。。只是一个猜测。从您的示例中,我们是MY_PROJECT_ROOT这就是您所说的DIR=os.path.abspath(os.path.dirname(file))@user1940979它只是指向项目路径的一个常见变量,例如MY_PROJECT_ROOT=“C:/myprojectdir”或“/home/username/myprojectdir”,其中myprojectdir是从中创建的目录结构“django-admin.py startproject myprojectdir”命令。
MIDDLEWARE_CLASSES = (
'...',
'apps.main.middleware.log.Logger',
)