11 ноября 2007
Django-приложения без проектов

Теги: Ссылки Django Paste

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

Юревич Юрий 11 ноября 2007, 16:41

Комментарии

Александр Соловьёв 11 ноября 2007, 20:52

С другой стороны, у меня есть опенсорсный блог. И мне реально удобнее всё это дело держать в одной дире, чтоб оно лежало в репозитории. Понятное дело, что каждый может скачать django-tagging, django-openid и т.д., но у меня они в некоторых местах отличаются от оригиналов.

И это серьёзный, имхо, довод за проекты. ;)

Юревич Юрий 12 ноября 2007, 03:35

Нет, не удобнее, а комфортней. У тебя создается впечатление, что всё под рукой, всё по контролем :)

Я в этом смысле не заморачиваюсь: в зависимости от ситуации, либо складываю третьесторонние либы в lib/third, либо просто делаю свои пакеты, а в приложении прописываю зависимости. У меня Django стоит яйцом, так что зависимости разруливаются setuptools.

Александр Соловьёв 12 ноября 2007, 13:32

А... А у меня Джанго не яйцом стоит, ибо я её не так и редко апдейчу. Плюс у меня не десяток проектов, а буквально один на работе и два для себя. Впечатление что всё под контролем неизбывно велико, не могу отказаться от него. ;-)

Макс Ищенко 14 ноября 2007, 23:29

Как ты думаешь, насколько реально (сложно) интегрировать Django код в Pylons проект, т.е. чтобы оно разворачивалось одним приложением (через paster serve)?

У нас код весь на Pylons а программист хочет попробовать написать модуль на Джанге. И я вот думаю как мы это добро потом собирать будем.

Юревич Юрий 16 ноября 2007, 07:11

Ситуация такова: есть DjangoPaste. Для простых конфигураций он работает. Но он очень сырой. Очень.

Я думаю, будет проще сделать отдельным приложением и "разруливать" диспетчеризацию на стороне фронтенд-сервера.

P.S. Основная причина, конечно, же в том что в Django не предусмотрено, что django-проект будет модулем какого-то сайта. Там можно состыковывать django-приложения, но только в рамках django-проекта. Иными словами, Pylons полагает, что весь сайт сделан на WSGI и Pylons-приложение -- просто кусочек. Django полагает, что весь сайт сделан на Django.

Юревич Юрий 16 ноября 2007, 07:13

Закончу про Paste, расскажу про Django+Paste

Макс Ищенко 23 ноября 2007, 07:08

Спасиб.

Оставьте свой комментарий