0

我正在編寫一個Google應用程序引擎應用程序,顯然默認的web應用程序框架是Django的一個子集。正因爲如此,我使用它的模板引擎。Django模板引擎和外部js文件

我的問題是,如果我有說了下面的代碼:

template_values = { 
    'first':first, 
    'second':second, 
    } 

    path = os.path.join(os.path.dirname(__file__), 'index.html') 

    self.response.out.write(template.render(path, template_values)) 

我想引用外部包括來自index.html的JavaScript文件模板值first,我只是繼續{{ first }}使用我會在index.html本身,或者我需要告訴框架有關example.js不知何故太多,所以它知道要在那裏取代參考?

回答

1

聲明:我的應用程序引擎知識有限,因此此答案可能無法滿足您的目的。

在Django中,如果您需要能夠將視圖中的變量傳遞給JS文件,則必須確保文件由模板引擎解析。換句話說,該文件必須由Django提供。這意味着例如如果您在由Nginx提供服務的media目錄中有JS文件,那麼您將無法在其中使用模板變量。

我期望同樣適用於應用引擎。但後來看到免責聲明。我可能是完全錯誤的:P

+0

懷疑這 - 在代碼中是如何完成的?只需將其添加到路徑變量? – rutherford 2010-09-09 17:55:38

+0

我知道Django的答案 - 使用'direct_to_template'上的薄包裝器來處理這個JS文件。不過,我不知道如何在應用程序引擎中執行此操作。 – 2010-09-09 18:02:13

+0

我看過Django方法。我不是一個很誠實的框架粉絲,因爲它看起來像我需要採用完整的Django庫來做到這一點,我想我只是將任何動態變量作爲函數參數傳遞。 – rutherford 2010-09-09 18:12:27

3

將值插入到javascript中可能是一個壞主意;腳本是否是靜態的並且讓它將數據從DOM中取出(假設它是您正在呈現的HTML頁面的一部分),或者使用AJAX調用從服務器獲取必要的數據?

+0

開放給建議,爲什麼這樣更好? Ajax調用將是一個不必要的開銷imo,但我有點像DOM插入的想法。我想,在頁面中給數據一個位置更自然一點? – rutherford 2010-09-10 11:11:21