2012-02-25 2 views
3

Возможно ли создать шаблон django, который может быть использован (вложен) внутри другого шаблона django? Я знаю команду extends, но я не думаю, что это то, что я ищу. Может быть, я просто не знаю, как заставить его работать в этой ситуации. Позвольте мне привести пример.Использование шаблонов Django в качестве фрагментов

В большинстве веб-приложений для отображения состояния входа в систему обычно используется способ логики для этого (с соответствующими «Приветствую г-на Фу» и «Нужно зарегистрироваться?») В небольшой шаблон, например:

loginstatus.html

{% if LoggedIn %} 
    Message message link link 
{% else %} 
    Other message different link 
{% endif %} 

Теперь, я полагаю, что я должен буду называть движок рендеринга и хранить этот вывод в переменную, а затем передать, что базовый шаблон, когда Я делаю это, так что мой базовый шаблон выглядит так:

index.html

<html> 
    <head> 
    </head> 
    <body> 
    <div id="Header">{{ LoginStatus }}</div> 
    </body> 
</html> 

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

Итак, можно ли (потому что я не смог заставить его работать, как я его себе представляю), чтобы предварительно создать шаблон django, а затем включить это превратили html в другой шаблон django?

Я не думаю, что это имеет значение, но я также работаю с Google App Engine, если это что-то меняет.

ответ

6

Для этого конкретного примера вы можете использовать тег include для включения фрагмента.

Для навигационной панели и ленты новостей, custom template tags - в частности, теги включения - были бы более уместными.

+0

Работал отлично, в версиях Django .96 и 1.2 (это то, что GAE поставляется с). Я даю вам галочку для того, чтобы указать на такое элегантное решение и напомнить мне, что я действительно должен прочитать эти руководства чуть больше, прежде чем я начну переоценивать эти вещи. Я еще не проверил пользовательские теги шаблонов, но я это сделаю. – Timbermar

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