2012-12-07 80 views
2

我在服務器端使用django,顯然在客戶端使用了javascript。現在我想在客戶端上使用plate template engine如何將django模板提供給javascript

爲客戶提供django模板的最佳方式是什麼?我們以某種方式教導了這一點。

  1. 創建一個服務於原始模板的視圖。
    • 可能不是最好的方法
  2. 複製所需的模板,以靜態的文件夾。
    • 這可能與自定義靜態文件取景器來完成
    • 的broser能夠緩存模板
  3. 提供使用模板標籤這使原始模板到一個javascript變量的模板。
    • 模板接受這種方式不能seperatly緩存

是一個Django應用程序在那裏,使這個easyer?

我需要客戶端上的模板的原因是,我想在服務器和客戶端使用相同的客戶端。當第一次加載頁面時,完整的模板將呈現在服務器上,當通過應用程序導航時,只有所需的數據被加載並且頁面更改是使用推送狀態完成的。

回答

2

如果您需要能夠擁有A)動態生成的平板模板,或B)動態創建平板模板(例如,通過管理員等進入數據庫),您將需要1(不是一件壞事 - django是爲服務文本內容而製作的,所以只要你需要以動態的方式使用它,這樣做沒有問題)。 3是一個不好的選擇,因爲它意味着瀏覽器無法緩存靜態資源(如果它輸出到每個頁面中)......除非每個頁面當然需要不同的印版模板。

如果您不需要上面的A或B,那麼我會將模板粘貼到您的靜態目錄中,就像您提到的那樣(例如,collectstatic或簡單地將它們添加到您的回購庫中,如果它們屬於你的應用程序)。

關於一個簡單的應用程序 - 你可以看看Django Chunks(將靜態塊輸出到頁面中的某個位置,比如`{%chunk「header-snippet」%}),但我不認爲你需要那個。

+0

我也需要服務器端的模板。因此將它們存儲在數據庫中不是一種選擇。我會將相關信息添加到我的問題中,並將查看django塊。 – frog32

+1

@ frog32 - 我現在看到你想要完成什麼。做到這一點的最佳方式可能是將模板作爲普通模板存在,然後使用低級模板API(load_template_source)與簡單視圖結合使用模板的源代碼返回JSON - 然後使用$ .getJSON從模板中獲取模板你的服務器。 – orokusaki

相關問題