web-dev-qa-db-ja.com

Flask Jinja2 url_forを複数のパラメーターで使用する方法

_jinja2_ url_for()関数の使用中に問題が発生しました。

私はこのようなルートを持っています:

_@app.route('/article/<int:article_id>/<url_title>/', methods=['GET'])
def article_page(article_id, url_title):
    article = Article.query.get(article_id)
    if article == None:
        abort(404)
    return render_template('article.html', article=article)
_

jinjaテンプレートファイルで、article_pageにリンクするURLを作成したいので、次のように記述します。

_<h5>
  <a href="{{ url_for('article_page',article_id=article.id,url_title=article.url_title) }}">{{ article.title }}</a>
</h5>
_

しかし、このページを実行すると、エラーが発生します。

_raise BuildError(endpoint, values, method)
BuildError: ('article_page', {'article_id': 1}, None)
_

2番目のパラメーター_url_title_がないようです。複数のパラメーターでurl_for()を正しく使用するにはどうすればよいですか?

13
Tiny Lin

url_forドキュメント によると:

クエリ引数の値がNoneの場合、ペア全体がスキップされます。

url_titleNoneではないことを確認してください。

または、url_title関数でarticle_pageのデフォルト値を指定します。

9
falsetru

あなたはドットを逃しました、それを試してください:

url_for('.article_page', article_id=article.id, url_title=article.url_title)