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

Tin*_*Lin 13 python 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)
Run Code Online (Sandbox Code Playgroud)

在jinja模板文件中,我想创建一个链接到article_page的URL,所以我这样写:

<h5>
  <a href="{{ url_for('article_page',article_id=article.id,url_title=article.url_title) }}">{{ article.title }}</a>
</h5>
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个页面时,我收到一个错误:

raise BuildError(endpoint, values, method)
BuildError: ('article_page', {'article_id': 1}, None)
Run Code Online (Sandbox Code Playgroud)

好像第二个参数'url_title'缺失了.如何正确使用带有多个参数的url_for()?感谢大家!

fal*_*tru 9

根据url_for文件:

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

确保url_title不是None.

或者url_titlearticle_page函数中指定默认值.


小智 5

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

url_for('.article_page', article_id=article.id, url_title=article.url_title)
Run Code Online (Sandbox Code Playgroud)