2017-04-13 68 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変数に設定する」ことはできません.Java変数にJinja2変数の値が割り当てられるようにページをレンダリングできます。私。あなたはjinja2テンプレートでvar x = {{ value }}で始まります。 jinja2はレンダリング中にそれをvar x = 42に変換します。レンダリングされた結果がクライアントに送信され、クライアントとしてJavaScriptとして実行され、xに値42が割り当てられます。ここで一時的なシーケンスがあるという事実(Python - > jinja2 - >レンダリングされたページソース - > JavaScript)は、あなたがしたいことをすることができないことを意味します:jinja2変数とJavaScript変数は同時に存在しません同じ場所でも、JavaScriptの値をjinja2変数に代入することは不可能です。

42をPython(そしておそらくは後でjinja2)に送信するには、その値をクライアントからサーバーに送信する要求を行う必要があります(フォームの送信またはAJAX要求)。

「javascriptの値をjinja変数に設定する」必要があると思うことを正確に記述すると、より良い応答を得ることができます。

関連する問題