2013-07-29 1 views
0

Привет всем я пытаюсь добавить промежуточное программное обеспечение, чтобы мое приложение и приложение находится в этом местеКак установить Джанго промежуточного программного файла настроек

myapp/sitemanager/middleware/__init__.py 
myapp/sitemanager/middleware/redirects.py 

, что это правильный путь, чтобы объявить его в моем settings.py file.i в настоящее время он установлен таким образом

MIDDLEWARE_CLASSES = ("sitemanager.middleware.redirects.SiteDetectionMiddleware") 

, но я держать адресности эту ошибку

ImproperlyConfigured: Error importing middleware sitemanager.middleware.redirects: "cannot  import name Address" 

Благодаря

+0

Предполагая, что '' myapp' и sitemanager' фактические пакеты Python (содержат '__init __. py') и в вашем PYTHONPATH вы можете столкнуться с проблемой циклического импорта. Прокомментируйте весь свой код в модуле промежуточного программного обеспечения, а затем разобщите свой импорт верхнего уровня один за другим ... просто подумайте. –

ответ

0

Вы должны убедиться, что ваш путь Python настроен правильно. Пусть (в проекте) Ваша структура каталогов напоминающего это: Джанго 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 регистратор Exemple (в 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 промежуточного программного обеспечения, который находится под main.

Таким образом, вы должны положить в settings.py что-то вроде этого:

import sys 
sys.path.append(MY_PROJECT_ROOT) 

и промежуточного кортежа:

MIDDLEWARE_CLASSES = (
'...', 
'apps.main.middleware.log.Logger', 
) 
+0

из вашего примера было MY_PROJECT_ROOT – user1940979

+0

это то, что вы имеете в виду DIR = os.path.abspath (os.path.dirname (__ file__)) – user1940979

+0

@ user1940979 Это просто общий указатель на ваш путь к проекту, такой как MY_PROJECT_ROOT = "C:/myprojectdir "или"/home/username/myprojectdir ", где myprojectdir - это структура каталогов, созданная из команды django-admin.py startproject myprojectdir. – felipsmartins

Смежные вопросы