Django-приложения без проектов ∞
Малькольм Трединник написал статью про то, как в Django можно обойтись без проектов.
Во многом, положения этой статьи пересекаются с моими собственными предпочтениями: последнее время я работаю исключительно с приложениями, не с проектами. Во-первых, распространяются (в виде tarball или egg) приложения, а не проекты. Во-вторых, как я уже говорил, проекты это лишняя сущность, по факту они никому не нужны.
Особых секретов в моем подходе нет - единственно, что я создаю приложение не средствами django-admin.py, а средствами PasteScript: в этом случае уже всё готово и для "приложения без проекта", и для пакетизации (setup.py рядом лежит).
Давайте прикинем, какие действия необходимо совершить, желая создать сайт на Django через django-admin.py:
- создать проект
django-admin.py startproject projectname - внутри проекта создать приложение
python manage.py startapp appname - скопировать шаблон
urls.pyиз проекта в приложение - в
settings.pyпроекта включить приложение вINSTALLED_APPS - в
urls.pyпроекта подключить urlconf из приложения
Вдобавок к этому, сложно придумать адекватные имена и проекту, и приложению, обычно либо проект получается mysite или типа того; либо воображения хватает только на проект, и приложение получается foo.foo.
C шаблоном приложения PasteScript всё сводится к:
- создать приложение
paster create -t django AppName
По-хорошему, неплохо бы еще и развертывание делать через PasteDeploy, даром что Django поддерживает WSGI. Для ситуации "один сайт - одно приложение" все делается достаточно легко, и я делал такое в тестовых целях. А вот для расклада "один сайт - несколько приложений", да еще с разными настройками (например, БД) возникают сложности, связанные с концептуальными решениями Django. Так что полноценную поддержку Django в Paste сделать достаточно проблематично, а частичное решение не понятно кому нужно...
P.S. Уже после того, как написал пост заметил, что и Джеймс Беннетт высказался на тему "жизнь без проектов".
