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

时间:2013-12-28 03:14:53

标签: python 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的网址,所以我这样写:

<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()?谢谢大家!

2 个答案:

答案 0 :(得分:7)

根据url_for documentation

  

如果查询参数的值为None,则跳过整个对。

确保url_title不是None

或者在url_title函数中指定article_page的默认值。

答案 1 :(得分:1)

你错过了一个点,试试看:

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