LINUX.ORG.RU

Django и его проекты

 , ,


0

3

Ранее когда создавал проект через django-admin (django-admin.py startproject shop) - создавался каталог shop, в котором размещались settings.py, urls.py, manage.py и т.д, если же создаешь через manage.py приложение - создается одноименный с приложением каталог, в котором уже есть models, views и свои urls.
Теперь же django-admin создает каталог shop, в котором лежит manage.py и еще один каталог shop! - зачем? Является ли это приложением shop внутри проекта shop или как вообще? Можно ли вернуть старое и более логичное поведение? Нужно ли теперь создавать через manage.py приложение, или оно создается одноименное с проектом при создании проекта? Тогда куда ложить корневой urls.py и settings.py? Джангисты, кто следил за этой вакханалией в ченджлоге - поясните плз как теперь расово верно поступать. Мой проект - это одно приложение, один интернет-магазин, и нужно сделать структуру максимально простой. Благодарю =)

Перемещено true_admin из development

★★★★★

они и так кладутся в shop/settings shop/urls. Приложения создаются отдельно. Сделано чтобы не было трудноотлаживаемых проблем когда у тебя при особом уличном pythonpath либо приложение шадовит импорты из проекта либо наоборот.

zz ★★★★
()

На самом деле, все не так плохо. Я лично под проект создаю такую структуру:

  • myproject_root
    • env(я так называю «песочницу»)
    • some_app (стороннее django-приложения)
    • myproject
      • myapp1
      • myapp2

Причем свои приложения я импортирую как import myproject.myapp1, import myproject.myapp2 etc.., а чужие просто как import some_app

Достоинства данного расклада довольно очевидны, - можно в каталоге с проектом содержать и свои и чужие аппликации. То есть portable (переносимость) как бы на лицо...

k0valenk0_igor ★★★
()
Ответ на: комментарий от zz

т.е они просто переместили корневые urls и settings во внутренний каталог shop? тогда как быть с UWSGI?

[uwsgi]
chdir = /home/komintern/data/www/shop.domain.com/shop
env = DJANGO_SETTINGS_MODULE=settings
env = PYTHON_EGG_CACHE=/tmp/eggs
module = django.core.handlers.wsgi:WSGIHandler()

там где chdir - у меня лежат manage.py, settings.py, urls.py - для _проекта_. получается теперь мне надо chdir писать ...www/shop.domain.com/shop/shop ? - т.е директорию внутри проекта с таким же названием как проект? или корневую проекта как и раньше?

Komintern ★★★★★
() автор топика
Ответ на: комментарий от KernelPanic

я вообще не создавал пока приложений. я создал проект с названием shop, оно создало каталог shop и внутри еще один каталог shop, внутри которого уже лежат settings, urls и т.д. вот это непонятно зачем и что теперь есть корнем проекта? каталог с manage.py или вложеный каталог с settings и прочими? или вложеный каталог это уже приложение, имеющее такое же название как проект?

Komintern ★★★★★
() автор топика
Последнее исправление: Komintern (всего исправлений: 2)
Ответ на: комментарий от Komintern

раньше многие приложения тоже по-разному были организованы. некоторые-хранили кучу приложений в apps(особенно, которые можно расширять, типа byteflow всяких). некоторые, простые,-наоборот, models и views держали в корне проекта

pawnhearts ★★★★★
()
Ответ на: комментарий от pawnhearts

т.е приложения нужно создавать внутри этого каталога. но manage.py лежит выше его, и при вызове ./manage.py startapp shopapp оно создает каталог рядом с shop, а не внутри него, как если бы это был корень проекта. серьезно, может кто-то пояснить эту логику, я очень прошу.

Komintern ★★★★★
() автор топика
Ответ на: комментарий от Komintern

ну типа проект теперь лежит рядом с app`ами просто. судя по stackoverflow

pawnhearts ★★★★★
()
Ответ на: комментарий от Komintern

только зря ты «решено» повесил. смысл всего проиходящего в этом плане для меня смутен, я понимаю что это как-то связано с reusability приложений, но практических примеров я не нагуглил.

pawnhearts ★★★★★
()
Ответ на: комментарий от pawnhearts

убрал. а смысл - это такая штука, что сколько не ищи - обломаешься. потому что оно не для смысла, а для прикола. ты вот например показал мне прикольный способ создания приложений ))

Komintern ★★★★★
() автор топика
Ответ на: комментарий от Komintern

ну может тут есть мимогуру, кто на пальцах объяснят:) какой то же смысл в эти изменения вкладывали, если следить за блогами разработчиков джанги, мейллистами - там это наверняка есть

pawnhearts ★★★★★
()
Ответ на: комментарий от Komintern

Пиши chdir/устанавливай pythonpath в blah/www/domain.com/shop. DJANGO_SETTING_MODULE=shop.settings. Делать как предлагали выше(руками насиловать создаватель приложений) не вижу смысла.

zz ★★★★
()
Ответ на: комментарий от zz

а какой смысл ложить приложения не внутри корневого каталога проекта, а рядом с ним? я именно в этом не вижу смысла.

Komintern ★★★★★
() автор топика

Джангисты, кто следил за этой вакханалией в ченджлоге - поясните плз как теперь расово верно поступать.

Для чего это всё было сделано:

* часто приложения в пакете поднимаются как разные инстансы и у них свои settings и urls.

* __init__.py у проекта некомильфо. У тебя могут быть абсолютно разношерстные приложения и объединять их под одним неймспейсом глупо, да и всё равно все забивали на это болт.

baverman ★★★
()
Ответ на: комментарий от Komintern

еще раз: при некоторых обстоятельствах у тебя импорты из проекта могут шадовить импорты из приложений и наоборот.

zz ★★★★
()
Ответ на: комментарий от Komintern

Алсо, что такое корневой каталог проекта?

zz ★★★★
()
Ответ на: комментарий от zz

я чувствую что в этих словах есть смысл, очень прошу - обьясни то же самое, но понятно )) с примером.

что такое корневой каталог проекта?

ну это каталог, где лежат manage.py, settings.py и urls.py проекта и где должны создаваться каталоги приложений, входящих в проект. ну как по мне )) может это ущербная логика, но у меня нет другой.

Komintern ★★★★★
() автор топика
Последнее исправление: Komintern (всего исправлений: 1)
Ответ на: комментарий от Komintern

То, что ты сейчас назвал корневым каталогом проекта, теперь, если упрощать объяснение, просто одно из приложений проекта, с которого начинается его работа.

gruy ★★★★★
()
Ответ на: комментарий от gruy

т.е я фактически в этот внутренний каталог могу положить models.py, views.py и все остальное, натравить туда uwsgi и оно будет работать?

Komintern ★★★★★
() автор топика
Ответ на: комментарий от Komintern

В принципе да. У меня в одном проекте так views.py используется для сборной индексной страницы.

gruy ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.