Какова наилучшая практика структурирования шаблонов в вашем проекте Django?
Я знаю, что есть много вопросов относительно наилучшей практики структурирования всего проекта Django, но я не могу найти конкретного объяснения о том, как структурировать шаблоны для проекта Django.
Очевидно, я только начал изучать Python/Django, и я совершенно сбит с толку, почему в большинстве найденных мной учебников / примеров имя каталога в каталоге templates всегда совпадает с именем каталога приложений.
Например:
gazette/
__init__.py
models.py
views.py
static/
...
templates/
gazette/
__base.html
__l_single_col.html
__l_right_sidebar.html
__l_left_sidebar.html
_article_full.html
_article_summary.html
_author_list.html
_author_name.html
_category_list.html
_navigation.html
_tag_list.html
article_detail.html
article_list.html
author_list.html
category_list.html
tag_list.html
это на самом деле взято из блога: https://oncampus.oberlin.edu/webteam/2012/09/architecture-django-templates
В приведенной выше структуре приложения каталог приложения / имеет шаблоны / под ним. В свою очередь, в шаблонах / есть один каталог gazette /, который совпадает с именем каталога приложения, в котором он содержится. В этой папке находятся фактические файлы шаблонов HTML.
Вопрос: Почему мы не можем просто поместить все файлы HTML-шаблонов в каталог templates /? Я бы понял логику структуры, если бы в папке с шаблонами было несколько каталогов. Тем не менее, я не нашел ни одного примера из каких-либо учебных пособий на YouTube или в блогах, где показана структура проекта, в которой есть несколько каталогов под каталогом шаблонов. Вместо этого они должны назвать свой единственный каталог (в шаблонах) так же, как каталог приложения.
Если бы вы могли объяснить принцип, стоящий за этим, и направить меня к любой ссылке / ссылке, я был бы очень признателен.
заранее спасибо
2 ответа
Один из вариантов хранения шаблонов - хранить шаблоны каждого приложения в каталоге шаблонов приложения.
Таким образом, структура проекта будет выглядеть примерно так
Project
app1
templates
app1
template1.html
template2.html
app2
templates
app2
template1.html
Таким образом, вы можете отобразить шаблон из представления, передав 'app1/templates1.html'
Ваш шаблон проекта Django в конце дня - это личный выбор, да, есть известные шаблоны, которые оптимизируют ваш рабочий процесс для большинства проектов, но в конце дня каждый проект отличается, например, это шаблон, который я использую, когда я работать на того, кто ожидает от меня соблюдения правил
Project
app1
app2
..etc
static
app1
images
css
js
app2
...etc
templates
app1
file.html
...etc
app2
..etc
log_files
app1_info.log
app2_info.log
app1_erros.log
..etc
это потому, что философия Django основана на разделении, Django строится вокруг поощрения модульности
когда я работаю над личными проектами, мне нравится смешивать все, потому что даже если я использую разные приложения для разных вещей, у меня все равно будет одинаковый стиль и одинаковые шаблоны для большинства из них.