2013-08-03 2 views
2

Я пишу приложение, которое использует django-floppyforms. Кроме того, мое приложение предоставляет по умолчанию twitter bootstrap скин, поэтому у меня есть настроенные шаблоны floppyforms в моем приложении, чтобы сделать их загрузочными. Я положил floppyforms/{layouts, rows}/bootstrap в каталог шаблонов моего приложения. Но это не работает: django не будет их использовать. Таким образом, я не хочу принуждать конечного пользователя размещать настроенные шаблоны в его проекте, на самом деле, я хочу указать django на использование моих локальных шаблонов floppyforms, когда он отображает контент в приложении. Я просто хочу сделать свое приложение автономным без каких-либо неудобных настроек.Django templates порядок поиска

UPDATE

Теперь я имею аналогичные проблемы с django-admintools-bootstrap и Django 1.5.1. Он был добавлен до admin_tools в INSTALLED_APPS, но эффекта нет. Также он не будет собирать статические данные для django-admintools-bootstrap. В других подобных проектах с использованием этих двух пакетов и Django 1.4 все работает нормально. Кроме того, я проверил примечания к выпуску для Django 1.5 для изменения порядка поиска шаблонов и ничего не нашел об этом.

ответ

3

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

Если они находятся в каталоге приложений, вы можете поставить 'django.template.loaders.app_directories.Loader' впереди всех в настройках TEMPLATE_LOADERS.

Кроме того, проверьте, как вы используете имена шаблонов при указании шаблонов. Вы должны использовать как 'floppyforms/layouts/bootstrap/template1.html'.

Более подробная информация на template loaders

+0

шаблоны floppyforms находятся в каталоге шаблонов приложений, поэтому я переместил '' django.template.loaders.app_directories.Loader'' в начало 'TEMPLATE_LOADERS'. Полный путь выглядит так: « /templates/floppyforms/layouts/bootstrap.html». Это все еще не работает.Кроме того, если я помещаю шаблоны floppyforms в путь шаблона проекта, загрузчик находит их. –

+0

@ lilo.panic, какой путь вы используете для указания шаблона? – Rohan

+0

Я просто хочу указать, что я не указываю какой-либо путь для floppyforms: когда я создаю экземпляр 'floppyforms.Form' в представлении,' floppyforms' использует пользовательские шаблоны для его отображения. Когда я создаю свой * собственный * вид, я использую путь, то есть '/themes/default/index.html' –

7

Обновленный ответ:

По Джанго 1.8, TEMPLATE_DIRS и TEMPLATE_LOADERS устарели и заменены TEMPLATES.

Примером TEMPLATES может быть:

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [ 
      os.path.join(BASE_DIR, 'templates'), 
     ], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
      ], 
      # 'loaders': [ 
      #  'django.template.loaders.filesystem.Loader', 
      #  'django.template.loaders.app_directories.Loader', 
      # ], 
      'debug': True, 
     }, 
    }, 
] 

Шаблон порядок поиска является диктуется следующее:

  • Essentialy самым важным местом является loaders вариант из OPTIONS. Если это определено, это требует, чтобы APP_DIRS не был установлен и следует за любым явным порядком.

  • Если нет погрузчиков, и если они определены DIRS, они имеют приоритет как загрузчик filesystem.

  • Если нет погрузчиков и APP_DIRS, они имеют второй приоритет над DIRS.

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

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