一尘不染

如何使用带有多个参数的Flask Jinja2 url_for

flask

使用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)

似乎url_title缺少第二个参数。如何url_for()正确使用多个参数?


阅读 1276

收藏
2020-04-07

共1个答案

一尘不染

根据url_for文件:

如果查询参数的值为“无”,则将跳过整个对。

确保url_title不是None

url_titlearticle_page函数中指定默认值。

2020-04-07