2010-11-13 47 views
1

我無法爲這篇文章想出一個更好的標題,所以如果有人認爲它不合適,請繼續編輯它。Python模板和Ajax

我用的燒瓶我的Python框架,通常我渲染模板做somne​​thing像下面: -

@app.route('/home') 
def userhome(): 
    data=go get user details from the database 
    return render_template("home.html",userdata=data) 

現在我有一個模板名稱home.html的在我遍歷的值「 userdata「,比如userdata.name,userdata.age等,這些值在模板中佔用適當的空間。

但是我正在通過ajax進行導航的應用程序,如果javascript不可用(基本上該應用程序不適用於沒有javascript的ppl),則不會回退。 導航菜單左邊有幾個標籤,(home,youroffers,yourlastreads)。根據用戶點擊的內容,右列應該動態更改。

我無法理解我在這裏如何處理模板。根據用戶點擊的內容,我可以通過json通過xhrGET或xhrPOST向他發送所需的數據。整個模板必須在服務器端處理,然後通過ajax調用傳輸整個模板。我其實不太喜歡那個想法。如果有人能在這裏指出我正確的方向,那將是非常棒的。

現在在通過ajax加載的頁面中,存在一些腳本。如果通過ajax加載,這些腳本是否可以工作?

回答

2

我會選擇服務器端模板,因爲除非你找到一個處理相同模板語言的JS庫,否則你的代碼將不會變幹。

home.html模板,我會做這樣的事情

<%extends base.html%> 
<%include _user_details.html%> 
... <% footer and other stuff%> 

並保持實際的標記在_user_details.html。這樣,對於AJAX請求,您只需渲染_user_details.html部分。

3

您有兩種選擇:服務器上的模板或瀏覽器中的模板。

要在服務器中進行模板創建,就像您已經擁有的端點一樣,除了模板僅創建頁面的一部分。然後,您通過Ajax調用來訪問URL,並將返回的HTML插入到頁面中。

要在瀏覽器中模板,您的端點會創建一個JSON響應。然後,一個Javascript模板庫可以採用該JSON,從中創建HTML,並將其插入到頁面中。例如,有lots of jQuery templating solutions