さまざまなFlaskルートに再利用するjinja2テンプレートがあります。これらのルートはすべて、必須パラメーターが1つありGET
、リクエストのみを処理しますが、一部のルートには追加の引数がある場合があります。
に追加の引数を追加する方法はありますurl_for()
か?
何かのようなもの
url_for(my_custom_url, oid=oid, args=extra_args)
これは(ルートエンドポイントに応じて)レンダリングされます:
# route 'doit/<oid>' with arguments
doit/123?name=bob&age=45
# route 'other/<oid>' without arguments
other/123
私のユースケースは、事前定義されたクエリ引数を持つリンクを提供することです。
<a href=" {{ url_for('doit', oid=oid, args=extra_args }} ">A specific query</a>
<a href=" {{ url_for('other', oid=oid) }} ">A generic query</a>
このテンプレートをJavaScriptなしで実行したいので、クリックリスナーを割り当てず、GET
可能であればAJAXを使用して各リンクのリクエストを実行したいと思います。
ルートパラメータと一致しない引数は、クエリ文字列として追加されます。口述extra_args
であると仮定して、それを開梱するだけです。
extra_args = {'hello': 'world'}
url_for('doit', oid=oid, **extra_args)
# /doit/123?hello=world
url_for('doit', oid=oid, hello='davidism')
# /doit/123?hello=davidism
次に、ビューでrequest.args
次のコマンドを使用してそれらにアクセスします。
@app.route('/doit/<int:oid>')
def doit(oid)
hello = request.args.get('hello')
...
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加