Jinja2テンプレート内のパラメータを使用してAJAX呼び出しを使用します。しかし、私はそれを可能にする方法はありますか?私はこのようなことをしたい。AJAXとJinja2
はJavaScript:
$.get("test.html", { name: "John", time: "2pm" });
神社テンプレート:
<div>
{{name}} {{time}}
</div>
Jinja2テンプレート内のパラメータを使用してAJAX呼び出しを使用します。しかし、私はそれを可能にする方法はありますか?私はこのようなことをしたい。AJAXとJinja2
はJavaScript:
$.get("test.html", { name: "John", time: "2pm" });
神社テンプレート:
<div>
{{name}} {{time}}
</div>
引数を取得するには、サーバー側のリクエストオブジェクトにアクセスする必要があります。私はFlaskを使用していると仮定していますが、そうでない場合、基本的な考え方は他のWebフレームワークでも同じでなければなりません。あなたは、あなたのAjaxのクエリにするためにJavascriptを使用してシンプルで小さなindex.htmlを、持っているとしましょう:あなたはスクリプト部分をレンダリングするためにJinja2のを使用していない場合は、なurl_forを置き換えること
$.get("{{ url_for('ajax') }}", {name: "John", time: "2pm"});
注() - コール実際のURLと、そのさらに下の私の例では/ AJAXのようなもの:
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/ajax')
def ajax():
#Access arguments via request.args
name = request.args.get('name')
time = request.args.get('time')
#NOTE: In real code, check that the arguments exist
#Silly logging call to show that arguments are there
app.logger.info(name)
app.logger.info(time)
#Do stuff here to do what you want or modify name/time
...
#Render template and pass the arguments to it
return render_template('ajax.html',
name=name,
time=time)
@app.route('/index')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
とajax.html WOU:
$.get("/ajax", {name: "John", time: "2pm"});
さて、サーバ側で、あなたはこのようなものを持っているでしょう例えば、このようなLDを見て何か:だから
<h2>{{ name }}</h2>
<h2>{{ time }}</h2>
request.argsあなたがGETで渡されました引数にアクセスできる場所ですが、あなたはrender_template()の呼び出しでJinja2のに明示的に渡す必要があります。 Jinja2はテンプレート言語に過ぎず、引数を渡さない限り、引数(1)を認識しません。
1)いくつかの例外を除いて。たとえば、Flaskは、Jinja2に要求オブジェクトのように暗黙的にいくつかの引数を渡します。
使用jqueryのdiv要素の内容を取得します。
<div>
<span id="name">{{name}}</span> <span id="time">{{time}}</span>
</div>
name = $("#name").text()
time = $("#time").text()
$.get("test.html", {name : name, time : time});
ありがとう回答。私は必要なのは、このcxt ['myParam'] = req.argsであり、テンプレート内で{{myParam}}を行うことができたことです。私が得るフォーマットは、{'name':['John']、 'time':['2pm']}です。どのように私はそれをデコードするので、私はそれをある条件で使うことができます。 {%if myParam.name == 'John'%} – Newcoma
私は今それを得たと思います。私は例えば{{myParam.name [0]}}を使用しています – Newcoma