Есть ли способ сделать {% extends '...'%} условным?- Джанго - PullRequest
66 голосов
/ 21 марта 2011

Я хотел бы поделиться шаблоном между AJAX и обычными HTTP-вызовами, единственное отличие состоит в том, что один шаблон должен обслуживаться с base.html html, а другой без.

Есть идеи?

Ответы [ 4 ]

124 голосов
/ 19 октября 2011

Другие ответы требуют, чтобы вы передали дополнительную контекстную переменную.Но пока вы можете получить доступ к объекту запроса, в этом нет необходимости:

{% extends request.is_ajax|yesno:"app/base_ajax.html,app/base.html" %}

Я обнаружил, что это гораздо удобнее.

85 голосов
/ 21 марта 2011

Используйте переменную.

{% extends base_template %}

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

24 голосов
/ 02 января 2013
{% extends override_base|default:'base.html' %}

Ps Я знаю, что это старый вопрос, но я нашел его при поиске ответа.Может быть, это поможет кому-то еще с той же проблемой.

7 голосов
/ 21 марта 2011

Вы можете использовать {% extends variable%}

Передача имени базового шаблона переменной при создании контекста в представлении.

http://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#extends

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...