2009-03-11 4 views
2

Я работаю с установкой Satchmo, которая находится в существующем проекте. Этот проект имеет свои собственные шаблоны, а также шаблоны для некоторых из установленных приложений. Некоторые из этих шаблонов для приложений имеют свои собственные изменения app_base.html, которые ожидают получить форму base.html. Я хотел бы иметь возможность делать то же самое с моими шаблонами Satchmo и размещать их в базе моего проекта, но также добавить еще один html вокруг всех них.Как создать шаблоны проектов и шаблоны Satchmo?

  • /шаблоны
    • base.html
    • index.html
    • /Новости
      • news_base.html (расширяет base.html и добавляет возможности шаблонов новостей конкретных)
      • index.html
      • detail.html
    • /магазин
      • base.html (переопределяем база Satchmo в)

Эта структура работает несколько, но не так, как я ожидал. in /store/base.html (база Satchmo) Я просто заменил все тестовым сообщением. Я вижу сообщение, поэтому я знаю, что satchmo загружает его базу, а не базу сайта. Тем не менее, я не могу расширить базу моего проекта больше, так как с помощью:

{% extends "base.html %} 

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

{% extends "../base.html" %} 

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

ответ

0

Хм, я не думал, что джанго посмотрел шаблоны относительно так.

Любопытное ума хак, но это должно работать:

  • /templates/store/base.html расширяет "global_base.html"
  • /templates/global_base.html расширяет "base.html"
0

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

TEMPLATE_LOADERS По умолчанию: ('django.template.loaders.filesystem.load_template_source', 'django.template.loaders.app_directories.load_template_source') Кортеж вызываемых объектов (как строки), которые знают, как импорт шаблонов от различных источников.См. Язык шаблонов Django : для программистов Python .

Для получения дополнительной информации о том, как это влияет на процесс загрузки шаблона: http://docs.djangoproject.com/en/dev/ref/templates/api/#loader-types

От того, как вы описываете вашу проблему, похоже, комментирование «app_directories.load_template_source» строки файл, вы можете быть чтобы лучше найти способ выполнить то, что вы делаете.

django.template.loaders.app_directories.load_template_source Нагрузки шаблоны из Django приложений на файловой системы. Для каждого приложения в INSTALLED_APPS загрузчик ищет подкаталог шаблонов . Если существует каталог , Django ищет шаблоны .

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

Например, для этого параметра:

INSTALLED_APPS = ('myproject.polls', 'myproject.music') ... затем get_template ('foo.html') будет искать шаблонов в эти каталоги, в этот заказ:

/path/to/myproject/polls/templates/foo.html /path/to/myproject/music/templates/foo.html Обратите внимание, что загрузчик выполняет оптимизацию когда он первый импортированный: он кэширует список из которых В файлах INSTALLED_APPS есть подкаталог шаблонов .

Этот загрузчик включен по умолчанию.

0

У меня была эта проблема. Похоже, разработчики satchmo планировали это, помещая «пустую» базу в каталог шаблона магазина. Хотя это, возможно, не относится к вам больше, я бы хотел увидеть это здесь.

Вы можете создать каталог «shop» в каталоге шаблонов и скопировать основной файл satchmo base.html в этот каталог.

Это сработало для меня.

Смежные вопросы