Джанго: Какое самое идеальное место для хранения промежуточного программного обеспечения для конкретного проекта? - PullRequest
9 голосов
/ 12 июля 2010

Я знаю, что могу "хранить его где угодно в моем пути Python" и все такое, но какой организованный шаблон я могу использовать для хранения классов промежуточного программного обеспечения для моего проекта?

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 12 июля 2010

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

projects/
templates/
common/
local/

Где:

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

Я обычно помещаю промежуточное ПО, которое зависит от проекта, в проект, и промежуточное ПО, которое не зависит от проекта, в общем / middleware /

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

4 голосов
/ 12 июля 2010

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

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

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

...