2011-04-15 63 views
0

我确定我在这里错过了一些基本的东西,但我花了好几个小时试图围绕这个来包裹我的头。我对Django很新,所以请原谅我:从模板的Django函数调用? (应该很容易)

如何从模板调用方法?

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

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

非常感谢大家! Loren

+1

我想你可能要为此使用JavaScript。 – DTing 2011-04-15 07:20:01

回答

2

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

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

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

但是使用python播放媒体和重定向可能不是一个好主意,如果可能的话,在一个明智的方式。

由于DTing在他的评论中提到这听起来像是Javascript/JQuery的典型用例。 那里有很多JQuery插件。找到适合您的目的的应该不会太难:例如,看看jPlayer

如果你想获得你的手脏看看这篇文章:Building a Custom HTML5 Audio Player with jQuery

+0

感谢您的建议 - 但我现在意识到我没有完全解释我自己。我想让

+0

...此刻,我叫它“audioHasFinishedPlaying();” JS功能,这工作正常。问题是,我无法弄清楚这个功能应该做什么。它应该调用一个自定义模板标签吗?如果是这样,自定义标签应该如何替换src =“”字段? – 2011-04-15 22:43:27

+0

仍然不确定是否需要模板标签。正如我所说,你不能通过呈现页面的视图传递可能的曲调列表吗?从那里你应该能够使用js来做所有的事情。 (虽然你当然可以通过Ajax-Calls加载一个动态生成的播放列表)查看这个答案,了解如何控制播放器的src:http://stackoverflow.com/questions/2551859/html-5-video-or -audio-playlist/2552131#2552131唯一的区别是你必须从列表/数组中抓取你的下一首歌曲。 – arie 2011-04-16 08:54:38

1

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

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

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

+0

会像Dajax这样做吗? http://www.dajaxproject.com/(我对web开发相当陌生 - 只是想确定我正在努力学习正确的东西......)谢谢! – 2011-04-17 05:45:46

+0

@Irog,说实话,我之前没有用过dajax,所以我不知道。你想做什么,是有一个django视图,返回在HTML或JSON中的数据表示,使用jquery.get()(AJAX)从JavaScript调用该视图,并使用该请求的结果做你的客户端边处理。也许就如何做到这一点咨询一个新的问题。 – 2011-04-17 10:03:22

+0

非常感谢!我认为Dajax就是这样做的。 (虽然我可能是错误的..需要多学习..)非常感谢! – 2011-04-18 04:12:19