Стандартно для приложения-каталога шаблонов в Django? - PullRequest
0 голосов
/ 21 ноября 2018

Я полагаю, что это вопрос, связанный с лучшими практиками в разработке Django.Я пытаюсь создать веб-сервис с главной страницей (base.html), которая содержит несколько приложений.Я хотел бы сделать приложения автономными, поэтому в каждом приложении я создал каталог templates, а также хотел бы воспользоваться функцией наследования шаблонов в Django, чтобы сделать все это как можно более плавным.

Теперь меня интересует, куда мне поместить base.html в моем проекте, чтобы система знала, где его найти?Кроме того, какие изменения я должен внести в файл settings.py, чтобы система могла подключать шаблоны?Существует ли какой-либо стандартный или известный метод, который требует минимальных усилий для такого рода организации?

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Для этого нет необходимости в центральном приложении.Параметр «ШАБЛОНЫ» также включает параметр «DIRS», представляющий собой список каталогов, в которых всегда выполняется поиск.Таким образом, вы можете установить его в соответствующий каталог - например, os.path.join(BASE_DIR, 'templates') и поместить туда не специфичные для приложения шаблоны, такие как base.html.

0 голосов
/ 21 ноября 2018

Как сказал @danialroseman, вам просто нужно обновить переменную DIRS in TEMPLATES в settings.py ::

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',

        ### ADD YOUR DIRECTORY HERE LIKE SO:
        'DIRS': [ os.path.join(BASE_DIR, 'templates')],
        ...

, теперь создайте каталог templates в корневой папке проекта ипоместите в него файл base.html.

0 голосов
/ 21 ноября 2018

Один из распространенных шаблонов проектирования, который я видел и использовал, состоит в том, чтобы иметь централизованное «приложение» как часть вашего проекта, содержащее все общие «вещи», которые вы хотите использовать в других приложениях.Таким образом, у вас может быть следующая структура каталогов:

base/
  static/
    css/
      common.css
    js/
      common.js
  templates/
    base.html
myapp1/
  urls.py
  views.py
  templates/
  ...
myapp2/
  urls.py
  views.py
  templates/
  ...
myproject/
  settings.py
  urls.py

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

В settings.py:

INSTALLED_APPS = ['base', 'myapp1', 'myapp2']
...