如何在设置文件中设置django中间件 [英] How to set django middleware in settings file
问题描述
我正在尝试添加中间件到我的应用程序,该应用程序位于此位置
Hi all i am trying to add middleware to my app and the app is located in this location
myapp/sitemanager/middleware/__init__.py
myapp/sitemanager/middleware/redirects.py
正确的方法是在我的settings.py file.i中声明它,目前已经设置了这种方式
what is the right way to declare it in my settings.py file.i currently have it set this way
MIDDLEWARE_CLASSES = ("sitemanager.middleware.redirects.SiteDetectionMiddleware")
但是我不断收到这个错误
but i keep geting this error
ImproperlyConfigured: Error importing middleware sitemanager.middleware.redirects: "cannot import name Address"
谢谢
推荐答案
您将确保您的Python路径已正确配置。
假设(在你的项目中)你的目录结构类似于:
Django 1.4
You'd make sure that your Python path is properly configured. Suppose (in your project) your directory structure resembling this: 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中):
It is my simple midlleware logger exemple (in 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包下,这是在主要应用程序。
Note that my custom middleware class (in log.py) is under my middleware python package, that is under main app.
所以,你应该放在你的settings.py这样:
So, you should put in your settings.py something like this:
import sys
sys.path.append(MY_PROJECT_ROOT)
和中间件元组:
MIDDLEWARE_CLASSES = (
'...',
'apps.main.middleware.log.Logger',
)
这篇关于如何在设置文件中设置django中间件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!