【问题标题】:Is it possible to prevent a base template reloading using django's template inheritance?是否可以使用 django 的模板继承来防止基础模板重新加载?
【发布时间】:2010-06-29 11:33:54
【问题描述】:

在我的基本模板 (main.html) 的标题区域中,我放置了一个 HTML5 媒体播放器,它可以提取通过我的管理界面上传的内容。

我正在尝试做的是,当曲目加载一次后,让媒体播放器不受内部网站导航的影响。换句话说,媒体播放器会继续播放,但用户可以在不中断播放/重新加载曲目的情况下浏览网站。

这是一个相当简单的设置。有一个主模板,其他每个部分(例如,博客、联系人和关于)都是在同一模板中加载的所有内容块,使用:

{% extends 'main.html' %}

据我了解,当模板系统评估子模板时,它首先加载父模板,然后按照定义填充子块。我在逻辑上(也许是错误的)假设子块区域将被“拉入”父块区域。但是,在阅读了关于模板继承的 django 文档后,看起来实际发生的是某种反向查找:查找父级 > 加载父级 > 查找块 > 填充块。正如我目前设置的那样,每次单击链接时,媒体都会停止播放并重新加载。

所以我的问题是我是否遗漏了 django 模板引擎工作方式中的一些基本内容,并且 有可能在仅使用模板引擎之后实现我想要的,或者这是否不可能我需要以其他方式(例如通过 AJAX)。这是我第一次尝试在 django 中做这样的事情,所以如果是前者,我一点也不感到惊讶。

【问题讨论】:

    标签: ajax django inheritance templates media-player


    【解决方案1】:

    我正在尝试做的是,当曲目加载一次后,让媒体播放器不受内部网站导航的影响。换句话说,媒体播放器会继续播放,但用户可以在不中断播放/重新加载曲目的情况下浏览网站。

    这不是特定于 Django 模板的东西,而是你的 HTML 页面的结构。媒体播放器不会在 Django 中被替换,而是在浏览器中通过重新加载页面来替换。

    你可以做的事情:

    • 让一切都通过 Ajax 运行。
    • 让所有其他页面在<iframe> 中运行
    • 让所有其他页面在<frameset> 标记中运行。

    Eiter 方式,当用户浏览网站时,地址栏中的 URL 将不再更改。要求 Ajax 也会影响 Google 索引您网站的能力。

    一本好的 HTML 书籍将帮助您开始设置基于框架集/iframe 的页面。

    【讨论】:

    • 感谢 vdboor。这真的很有帮助。
    猜你喜欢
    • 2011-09-14
    • 2011-09-12
    • 2015-11-30
    • 2014-09-18
    • 1970-01-01
    • 2018-02-06
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多