javascript - 如何获得页面的无布局版本?

标签 javascript jquery django fancybox

我有一些页面,例如用户协议(protocol),我希望根据其调用方式,带或不带布局(extends 标记)显示。我正在使用 jQuery Fancybox 在 iframe 中加载这些页面。如果禁用 JS,链接应在带有完整布局的新窗口中打开,否则,如果它们位于 iframe 中,则不需要布局。

到目前为止,我正在使用 jQuery 删除页眉/页脚(仅用内容部分替换正文)

if(window.location != window.parent.location) {
    $('body').html($('#content'));
}

但是加载永远不会显示的内容(或者更糟糕的是,在 JS 启动之前会显示半秒)似乎是不对的。我想我可以做的是创建一个仅包含内容的部分模板,然后创建两个容器页面,一个带有页眉/页脚,一个没有;它们都包括部分。然后使用 JS 修改链接...这将必须指向不同的 View ,进而调用不同的模板...看起来工作量非常大。有更好的方法吗?

<小时/>

@蔡司S:

这样的事情在 Django 中不可能:

{% if not iframe %}
    {% extends "layouts/default.html" %}
{% endif %}

{% extends %} 标记必须是模板中的第一个标记,因此不能有条件地注释掉。我想也许我可以在布局本身中做到这一点...然后它会应用于我的所有页面...让我们尝试一下。

最佳答案

使用 Bryan 和 Mark 的答案作为基础,您可以编写自己的上下文处理器: http://docs.djangoproject.com/en/1.2/ref/templates/api/#writing-your-own-context-processors

这样做将允许您在模板中使用 if 语句有条件地提供服务。

可能是最优雅的,因为您仍然可以根据需要使用包装器。

您可以将其与您自己的模板标记结合起来,该标记为您提供扩展功能,但条件基于提供的变量。 (不确定您是否可以复制扩展功能)。

http://docs.djangoproject.com/en/1.2/howto/custom-template-tags/#writing-custom-template-tags

另一个选择是使用 django 的 {% include %} 标记,您可以使用 if 语句包装它。

关于javascript - 如何获得页面的无布局版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3526376/

相关文章:

javascript - 函数和方法同名,不能在后者中调用前者

javascript - 大型react-redux表单应用程序

javascript - 将 ajax 响应转换为 ol3 GML 层

javascript - 如何在 angularJS 或 JQuery 或 JavaScript 中保持控件

javascript - 显示空行 jQuery dataTables

javascript - 使用数据表数字搜索搜索表

jquery - FullCalendar 调整大小时修改标题

django - 判断模板是否需要 Django 字段

python - Django休息框架: other URLs overwritten when including default router

python - 从 Django 连接到 MySQL