2011-09-19 22 views
91

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

は、ルーティングする関数の引数を1つとりますが、引数を追加できません。

答えて

150

これは、変数のキーワード引数を取ります。

url_for('add', variable=foo) 
+9

は、関数が 'def add(variable)'であることを意味しますか? – endolith

+3

@endolith、はい。 ** 'url_for'に渡されたkwargsは、Flaskの可変ルールルートの関数パラメータとして渡されます。 – highvolt

26

は、あなたのテンプレートにJSやCSSをリンクするため、使用のthe Flask API document for flask.url_for()

他のサンプルスニペットを参照してください以下の通りです。フラスコ内の

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

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

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> 

あなたは、単にパラメータを渡すことができます!

+0

質問があります。最初の例では、インデックスメソッドが文字列として渡され、2番目のメソッドではfind_questionが渡されます変数。どうして? –

+0

@AnandTyagiこれはあなたの意味ですか? [URLルーティング](http://flask.pocoo.org/docs/0.12/quickstart/#url-building) –

関連する問題