Любой способ сделать {% extends '...'%} условным? - Django

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

Любая идея?

Ответ 1

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

{% extends base_template %}

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

Ответ 2

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

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

Я нашел, что это намного удобнее.

Ответ 3

{% extends override_base|default:'base.html' %}

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