我确定我在这里遗漏了一些基本的东西,但是我花了几个小时试图解决这个问题。我对 Django 很陌生,所以请原谅我:
如何从模板调用方法?
具体来说,我想加载一个自动播放和元素的页面,然后让它加载/播放另一个具有不同文件的页面。(通过 python 脚本选择。)
我需要将其定义为自定义标签吗?我在这里缺少什么概念?
非常感谢大家!罗兰
我确定我在这里遗漏了一些基本的东西,但是我花了几个小时试图解决这个问题。我对 Django 很陌生,所以请原谅我:
如何从模板调用方法?
具体来说,我想加载一个自动播放和元素的页面,然后让它加载/播放另一个具有不同文件的页面。(通过 python 脚本选择。)
我需要将其定义为自定义标签吗?我在这里缺少什么概念?
非常感谢大家!罗兰
是的,您不能在模板中调用函数(带参数)。这就是模板标签的用途。
您当然可以将模板引擎换成更宽松的引擎,比如说Jinja2。但我想这个解决方案对于你有限的任务来说太复杂了。
如果您事先知道您的播放列表,您可以在视图中构建它并将其传递给您的模板。
但是使用 python 播放媒体并进行重定向可能不是一个好主意,如果可能的话,以一种明智的方式。
正如 DTing 在他的评论中提到的,这听起来像是 Javascript/JQuery 的典型用例。那里有很多 JQuery 插件。找到一个适合您的目的不应该太难:例如看看jPlayer。
如果您想亲自动手,请查看这篇文章:使用 jQuery 构建自定义 HTML5 音频播放器
我认为您可能对 Django 中的模板如何工作感到有些困惑。模板负责在服务器上生成字符串。这个字符串充满了 HTML 标记。模板标签用于根据服务器数据呈现部分字符串。
一旦构造了这个字符串,它就会通过 Web 服务器发送到客户端。请记住,这只是一个字符串。
从此时起,任何需要执行的代码都必须在 javascript 中。您的示例是指等待文件在客户端上完成播放 - 因此客户端(javascript)负责等待该文件完成并开始一个新文件。如果不向服务器发出另一个 HTTP 请求,则不能从客户端调用 python 代码。模板标签不遍历 HTTP 到客户端。它们只是帮助服务器构造发送的字符串的一种方式。