У меня есть несколько страниц, таких как пользовательское соглашение, которое я хочу отображать с макетом или без него (тег extends
) в зависимости от того, как он вызывается. Я использую jQuery Fancybox
для загрузки этих страниц в фреймах. Если JS отключен, ссылки должны открываться в новом окне с полным макетом, в противном случае, если они находятся в iframe, макет им не нужен.
На данный момент я использую jQuery для удаления верхнего / нижнего колонтитула (заменяя тело только частью содержимого)
if(window.location != window.parent.location) {
$('body').html($('#content'));
}
Но кажется неправильным загружать вещи, которые никогда не будут отображаться (или, что еще хуже, будут отображаться в течение полсекунды, пока не активируется JS). Я думаю, что я мог бы сделать, это создать частичный шаблон, содержащий только содержимое, а затем две страницы контейнера, одну с верхним / нижним колонтитулом и одну без; они оба включают частичное. Затем используйте JS, чтобы изменить ссылку ... которая должна указывать на разные представления, которые, в свою очередь, будут вызывать разные шаблоны ... кажется очень большой работой. Должен быть лучший способ?
@ ZeissS:
Нечто подобное не возможно в Django:
{% if not iframe %}
{% extends "layouts/default.html" %}
{% endif %}
Тег {% extends %}
должен быть первым тегом в шаблоне, поэтому он не может быть закомментирован условно. Я думаю, может быть, я мог бы сделать это в самом макете ... и тогда это применимо ко всем моим страницам ... давайте попробуем это.