如何在设置文件中设置django中间件 [英] How to set django middleware in settings file

查看:86
本文介绍了如何在设置文件中设置django中间件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试添加中间件到我的应用程序,该应用程序位于此位置

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆