Fork me on GitHub
11/11/2007

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. Уже после того, как написал пост заметил, что и Джеймс Беннетт высказался на тему "жизнь без проектов".

Комментарии

Все статьи