2017-04-13 58 views
1

我知道我們可以將Jinja變量設置爲js變量。如何設置javascript值到jinja變量

var x = {{ 'value' }} 

但我試圖做相反的事情。即我試圖將javascript值設置爲jinja變量。我嘗試了以下,但沒有任何工作。

{{value}} = x 
{% set value = x %} 
{% set value %} x {% endset %} 

x是javascript變量。

有沒有什麼辦法可以做到這一點。

回答

4

這是不可能的,並且反映了您對Web應用程序體系結構的深入理解。 jinja2是Python的模板引擎,運行在您的服務器上。你正在談論的JavaScript正在瀏覽器中運行。

當服務器接收到一個請求時,它會處理一個jinja2模板以獲取它將發送給客戶端的響應。您不能「將Jinja變量設置爲js變量」,您可以以最終爲JavaScript變量分配Jinja2變量中的值的方式呈現頁面。即您在jinja2模板中以var x = {{ value }}開頭; jinja2在渲染過程中將其轉換爲var x = 42;然後渲染的結果被髮送到客戶端,客戶端將其作爲JavaScript執行,並將值42分配給x。這裏有一個時間序列(Python - > jinja2 - >呈現頁面源代碼 - > JavaScript)這一事實意味着你不能做你想做的事情:jinja2變量和JavaScript變量不能同時存在,也不在同一個地方,並且將一個JavaScript值賦給jinja2變量是不可能的。

爲了將值42發送給Python(以及稍後可能會發送給jinja2),您需要發送一個請求,將該值從客戶端發送到服務器:表單提交或AJAX請求。

如果你想描述你想要做什麼,你認爲需要你「設置javascript值給jinja變量」,你可能會得到更好的迴應。