我正在使用遠端將會話中的JSON值加載到Web應用程序中。但是,當我最初使用Chameleon模板呈現頁面時,我想加載一些任意的JSON值來填充結構。做這個的最好方式是什麼?在金字塔中呈現模板和JSON
我目前正在做的是使用模板渲染頁面,然後在文檔準備就緒時使用JavaScript來請求JSON。但是,這會導致加載中出現口吃。
我正在使用遠端將會話中的JSON值加載到Web應用程序中。但是,當我最初使用Chameleon模板呈現頁面時,我想加載一些任意的JSON值來填充結構。做這個的最好方式是什麼?在金字塔中呈現模板和JSON
我目前正在做的是使用模板渲染頁面,然後在文檔準備就緒時使用JavaScript來請求JSON。但是,這會導致加載中出現口吃。
您可以在兩個視圖之間共享相同的數據。如果請求是通過AJAX發送的,您將返回一個json編碼版本的數據(some_data_route
)。如果您還想在呈現初始html頁面時呈現此數據,請將其傳遞到您的模板並在那裏處理。
@view_config(route_name='some_data_route', renderer='json')
def data_view(request):
data = load_data(request) # find the data somewhere
return {'data': data}
@view_config(route_name='some_route', renderer='some_route.html.mako')
def view(request):
data = load_data(request)
return {'data': data}
現在,您可以執行一些技巧,使模板中的渲染代碼更接近於ajax處理代碼(如果您願意)。例如,也許你想要JSON編碼data
然後在你的變色龍模板中,你可以將這些數據傳遞給你的AJAX回調。這不會被調用,直到JavaScript被加載,但至少它不會需要最初的HTTP請求。
在金字塔1.4中,有一個很酷的技巧可以將一些html渲染嵌入到可直接從Python中調用的mak def
中。這使您可以使用與AJAX響應相同的HTML代碼段,也可以直接在您的模板中使用。我認爲這個功能也適用於變色龍,但我不確定。
你在問題中遺漏了什麼,阻止你從視圖中向渲染器返回額外的值? –
用於將JSON值加載到頁面中的JavaScript調用。我將其包含在問題中...... – abroekhof
您是否遺漏了模板的基本概念,您可以在渲染模板時將數據傳遞到模板中?如果沒有,請粘貼一些可能會導致問題的Python。 –