Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在设置文件中设置django中间件_Python_Django - Fatal编程技术网

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',
)