Ответы пользователя по тегу Django
  • Как грамотно организовать проект на Django (приложения, шаблоны, статические файлы)?

    zymanch
    @zymanch
    python/django web-developer
    Обычно разделяю предметные области проекта на отдельные приложения. Если какая-то область слишком обширна, то в папке приложения создаю отдельные приложения для подобластей. Для каждого приложения - своя папка templates: это позволяет при большом количестве приложений не путаться в разросшейся иерархии директорий. Кроме того, отправляю всю обособленную статику в директории static каждого приложения: иногда для работы интерфейса пишу JavaScript приложения на Marionette - всегда знаю, где искать нужную кучу скриптов.
    Для примера: пишем проект для дилерской сети по распространению и продаже автомобилей. Получается так:
    ./project_name/
    ./project_name/settings.py
    ./project_name/urls.py
    ./project_name/static/
    ./project_name/static/css/...
    ./project_name/static/js/...
    ./project_name/static/imgs/...
    ./dealer/
    ./dealer/admin.py
    ./dealer/models.py
    ./dealer/views.py
    ./dealer/urls.py
    ./dealer/templates/
    ./dealer/templates/dealer/
    ./dealer/templates/dealer/list.html
    ./vehicles/
    ./vehicles/admin.py
    ./vehicles/models.py
    ./vehicles/logistics/
    ./vehicles/logistics/models.py
    ./vehicles/logistics/admin.py
    ./vehicles/logistics/views.py
    ./vehicles/logistics/urls.py
    ./vehicles/logistics/templates/
    ./vehicles/logistics/templates/logistics/tracking.html
    ./vehicles/logistics/static/
    ./vehicles/logistics/static/js/app/tracking/
    ./vehicles/logistics/static/js/app/tracking/main.js
    ./vehicles/logistics/static/js/app/tracking/app.js
    ./vehicles/logistics/static/js/app/tracking/...
    ./vehicles/sales/
    ./vehicles/sales/models.py
    ./vehicles/sales/admin.py
    ./vehicles/sales/views.py
    ./vehicles/sales/urls.py
    ./vehicles/sales/templates/
    ./vehicles/sales/templates/sales/invoices.html
    ./vehicles/sales/static/
    ./vehicles/sales/static/js/app/invoices/
    ./vehicles/sales/static/js/app/invoices/main.js
    ./vehicles/sales/static/js/app/invoices/app.js
    ./vehicles/sales/static/js/app/invoices/...
    ./static/
    ./media/
    ./templates/
    ./templates/base.html
    ./templates/...

    Далее по аналогии. Если нужна какая-то мелочь - отправляем ее в соответствующее "корневое" приложение; если мелочь становится более серьезным куском функционала в рамках той же предметной области - создаем ей отдельное приложение внутри уже существующего. Все, что выходит за рамки предметной области - новое "корневое" приложение.
    Ответ написан
    Комментировать