我知道我們可以將Jinja變量設置爲js變量。如何設置javascript值到jinja變量
var x = {{ 'value' }}
但我試圖做相反的事情。即我試圖將javascript值設置爲jinja變量。我嘗試了以下,但沒有任何工作。
{{value}} = x
{% set value = x %}
{% set value %} x {% endset %}
x是javascript變量。
有沒有什麼辦法可以做到這一點。
我知道我們可以將Jinja變量設置爲js變量。如何設置javascript值到jinja變量
var x = {{ 'value' }}
但我試圖做相反的事情。即我試圖將javascript值設置爲jinja變量。我嘗試了以下,但沒有任何工作。
{{value}} = x
{% set value = x %}
{% set value %} x {% endset %}
x是javascript變量。
有沒有什麼辦法可以做到這一點。
這是不可能的,並且反映了您對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變量」,你可能會得到更好的迴應。