web-dev-qa-db-ja.com

url_for()を使用してFlaskに動的URLを作成します

Flaskルートの半分には、変数/<variable>/addまたは/<variable>/removeが必要です。それらの場所へのリンクを作成するにはどうすればよいですか?

url_for()は、ルーティングする関数の引数を1つ取りますが、引数を追加できませんか?

138
Gio Borje

変数のキーワード引数を取ります:

url_for('add', variable=foo)
209
FogleBird

Flaskのurl_forは、URLを作成して、アプリケーション全体(テンプレートを含む)でURLを変更しなければならないオーバーヘッドを防ぐために使用されます。 url_forがなければ、アプリのルートURLに変更がある場合、リンクが存在するすべてのページで変更する必要があります。

構文:url_for('name of the function of the route','parameters (if required)')

次のように使用できます。

@app.route('/index')
@app.route('/')
def index():
    return 'you are in the index page'

これで、インデックスページのリンクがある場合は、これを使用できます。

<a href={{ url_for('index') }}>Index</a>

あなたはそれを使ってたくさんのことをすることができます、例えば:

@app.route('/questions/<int:question_id>'):    #int has been used as a filter that only integer will be passed in the url otherwise it will give a 404 error
def find_question(question_id):  
    return ('you asked for question{0}'.format(question_id))

上記については、次を使用できます。

<a href = {{ url_for('find_question' ,question_id=1) }}>Question 1</a>

このように、単にパラメーターを渡すことができます!

75
Hiro

flask.url_for()のFlask AP​​Iドキュメント を参照してください

Jsまたはcssをテンプレートにリンクするための使用法の他のサンプルスニペットを以下に示します。

<script src="{{ url_for('static', filename='jquery.min.js') }}"></script>

<link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}">
30