2013-04-24 50 views
3

加載骨幹應用程序時(我的應用程序就意味着加載的頁面),我需要的初始收集的數據,和骨幹文檔說:如何加載骨幹的自舉模式在Django

<script> 
    var accounts = new Backbone.Collection; 
    accounts.reset(<%= @accounts.to_json %>); 
    var projects = new Backbone.Collection; 
    projects.reset(<%= @projects.to_json(:collaborators => true) %>); 
</script> 

我不不明白這一點。劑量是否意味着我應該與初始數據顯示頁面類似

{{collection_initial_data}} 

我使用的後端Django的,所以我怎麼翻譯上面的代碼爲Django的模板, 像

<script> 
    var accounts = new Backbone.Collection; 
    accounts.reset({{ @accounts.to_json }}); 
    var projects = new Backbone.Collection; 
    projects.reset({{ @projects.to_json(:collaborators => true) }}); 
</script> 

反正我對獲得骨幹收集的初始數據感到非常困惑。

+1

從骨幹網的doc:「*請注意,取不應該被用來填充在頁面加載的集合 - 在加載時所需的所有車型應該已經被自舉地點。*」。這只是意味着你的數據應該加載頁面本身,而不是通過大量的AJAX調用來異步加載。關於django的一部分,我不知道如何,但是你必須以JSON格式打印數據。 – Loamhoof 2013-04-24 15:03:16

+1

是的,爲什麼我問這個問題,「加載時需要的所有模型應該已經引導到位」,但是如何? – paynestrike 2013-04-24 15:04:57

+0

只需在您發送客戶的頁面中打印它們(這就是該示例的功能)。從來沒有與Django合作過,無法幫助你做到這一點(如果我能在這裏幫助你,我會發佈一個答案)。 – Loamhoof 2013-04-24 15:07:20

回答

5

當關於引導骨幹會談,他們在談論這一點:

http://documentcloud.github.io/backbone/#FAQ-bootstrap

換句話說,他們說你應該寫出來你的模型的內容,你的Django HTML模板,裏面一個腳本標籤。

例如,假設您的Django上下文有一個名爲「foo_models」的變量,其中包含所有foo模型的JSON表示。你想修改你的Django模板做這樣的事情:

<script> 
var foo_models = new FooCollection({{foo_models}}); 
</script> 

這樣,你能保證你的數據已經準備好,因爲它得到加載的頁面上,你的JS代碼可以使用JS foo_models到訪問該數據。

現在,您的困惑似乎與如何使foo_models Python/Django變量擺在首位。我建議在View邏輯中執行此操作,而不是在模板中執行此操作,因爲您可以使用Python及其庫的全部功能來序列化JSON。但是,如果您確實想在您的視圖中執行此操作,則可以使用與您指定的語法非常相似的語法來執行此操作;檢查出的第二個答案,這太問題:

Django: Parse JSON in my template using Javascript

+0

謝謝machineghost它真的幫助很多! – paynestrike 2013-04-25 00:47:46

+0

:-)很高興我能幫到 – machineghost 2013-04-25 01:06:56

+0

嗨,我確實得到了foo_models,但我怎麼能得到這個變量在我的app.js – paynestrike 2013-04-25 02:00:13