2011-04-15 58 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