2010-07-11 3 views
9

Я знаю, что могу «хранить его в любом месте моего пути python» и все, но что такое организованный шаблон, который я могу использовать для хранения классов промежуточного программного обеспечения для моего проекта?Django: Какое самое идеальное место для хранения промежуточного программного обеспечения для конкретного проекта?

Я добавив свой проект корневой каталог и каталог проекта на пути SYS через mod_wsgi:

sys.path.append('/srv/') 
sys.path.append('/srv/workarounds/') 

Последняя линия является корнем проекта. В качестве примера предположим, что я хочу применить этот класс промежуточного программного обеспечения: http://djangosnippets.org/snippets/1179/

Можно ли скопировать содержимое фрагмента в файл middleware.py и выгрузить его в корневой каталог проекта? Создайте каталог для промежуточного программного обеспечения, добавьте этот каталог в мой путь к python?

ответ

5

Мой обычный макет для Джанго сайта:

projects/ 
templates/ 
common/ 
local/ 

Где:

  • проектов содержит свой основной проект и любые другие
  • общие содержит вещи, которые вы можете поделиться через сайты, или по крайней мере, не зависит от проекта, например, если вам нужно скачать django-профиль и django-registration, а не напрямую в python/site-packages
  • шаблоны содержат только то, что
  • локальный содержит вещи, которые будут специфичны для текущего компьютера, так что вы можете иметь правильно разделенные данные, такие как местоположение базы данных и пароль, - затем затем софт-ссылку на конкретные для машины версии (скажем, «machine1 -localconfig.py ") на местный/localconfig.py, а затем может„импортировать localconfig“в settings.py

я вообще поставили промежуточное это конкретный проект внутри проекта, а также промежуточный слой, который не конкретный проекта общих/middleware/

Обязательно добавьте каталог шаблонов в нужное место в настройках (или, скорее всего, localconfig.py, а затем импортируйте его в настройках) и ma kse обязательно добавьте проекты, общие и локальные каталоги в ваш PYTHONPATH.

4

Если у вас есть только пара тесно связанных классов промежуточного слоя, поместите их в модуль middleware.py под корнем приложения. (Вот как это делают приложения django.contrib - см. Промежуточное ПО приложения для сеансов here).

Если у вас много разных классов промежуточного слоя, создайте промежуточное пакакье с подмодулями соответствующих классов промежуточного слоя. Хотя, если вы в конечном итоге оказались в этой ситуации, подумайте, как вы можете реорганизовать свой проект на несколько мини-приложений, которые решают определенную потребность (и с открытым исходным кодом их :)).

Лично у меня есть общий пакет django, где я сбрасываю общее промежуточное программное обеспечение (например, связанное с вами класс LoginRequiredMiddleware) в пакет middleware. Если это имеет смысл в контексте вашего проекта, я бы очень предложил его. Это спасло мои бесчисленные часы дублирования и исправление ошибок. django-common и django-annoying являются хорошими примерами такого макета проекта

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

  • Нет связанных вопросов^_^