从模板调用Django函数? (应该很容易)

时间:2011-04-15 07:07:55

标签: javascript django html5 html5-audio

我确定我错过了一些基本的东西,但我花了好几个小时试图绕过这个。我对Django很新,所以请原谅我:

如何从模板中调用方法?

具体来说,我想加载一个autoplays和element的页面,然后用另一个文件加载/播放另一个页面。 (通过python脚本选择。)

我是否需要将其定义为自定义标记?我在这里错过了什么概念?

非常感谢大家! 洛伦

2 个答案:

答案 0 :(得分:2)

是的,你不能在模板中调用函数(带参数)。这就是templatetags的用途。

当然,swap the template engine你可以Jinja2更加宽容,让我们说jPlayer。但我想这个解决方案对于你的有限任务来说太复杂了。

如果您事先知道自己的播放列表,可以在视图中构建播放列表并将其传递给模板。

但是使用python来播放媒体并进行重定向可能不是一个好主意,如果可能的话,可能会以合理的方式进行。

正如DTing在他的评论中提到的,这听起来像是Javascript / JQuery的典型用例。 那里有很多JQuery-Plugins。找到一个适合你的目的不应该太难:例如,看一下Building a Custom HTML5 Audio Player with jQuery

如果你想亲自动手,请看看这篇文章:{{3}}

答案 1 :(得分:1)

我认为你可能会对Django中的模板如何工作感到困惑。模板负责在服务器上生成字符串。这个字符串充满了HTML标记。模板标记用于根据服务器数据呈现字符串的部分内容。

构建此字符串后,它将通过Web服务器发送到客户端。请记住,这只是一个字符串。

从现在开始,任何需要执行的代码都必须使用javascript。您的示例是指等待文件在客户端上完成播放 - 因此客户端(javascript)负责等待该文件完成并启动新文件。如果不向服务器发送另一个HTTP请求,则无法从客户端调用python代码。模板标记不会将HTTP遍历到客户端。它们只是帮助服务器构造发送字符串的一种方式。