是否可以使用django的模板继承来阻止基本模板重新加载?

时间:2010-06-29 11:33:54

标签: ajax django inheritance templates media-player

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

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

这是一个相当简单的设置。有一个主要模板,其他每个部分(比如博客,联系人和约)都是使用以下内容加载到同一模板中的内容块:

{% extends 'main.html' %}

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

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

1 个答案:

答案 0 :(得分:2)

  

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

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

你可以做的事情:

  • 让一切都通过Ajax运行。
  • 让其他所有网页都在<iframe>
  • 中投放
  • 让所有其他网页都在<frameset>代码中运行。

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

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