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

Django function call from the template? (should be easy)

本文关键字:很容易 调用 函数 Django      更新时间:2023-09-26

我相信我在这里错过了一些基本的东西,但是我花了几个小时试图把我的头围绕在这个上面。我是Django的新手,所以请原谅我:

如何从模板调用方法?

具体来说,我想加载一个自动播放和元素的页面,然后让它加载/播放另一个不同的文件。(通过python脚本选择)

我需要将其定义为自定义标签吗?我在这里漏掉了什么概念?

谢谢大家!罗兰

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

你当然可以把模板引擎换成一个更宽松的,比如说,Jinja2。但我想对于你有限的任务来说,这个解决方案太复杂了。

如果你事先知道你的播放列表,你可以在你的视图中构造它,并把它传递给你的模板。

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

正如DTing在他的评论中提到的,这听起来像是Javascript/JQuery的典型用例。市面上有很多jquery插件。找到一个适合你的目标应该不会太难:以jPlayer为例。

如果你想亲自动手,可以看看这篇文章:用jQuery构建一个自定义HTML5音频播放器

我想你可能对Django中的模板是如何工作的有点困惑。模板负责在服务器上生成字符串。这个字符串充满了HTML标记。模板标签用于根据服务器数据呈现字符串的各个部分。

一旦这个字符串被构造,它将通过web服务器发送给客户端。请记住,这只是一个字符串。

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