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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/20810630/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-18 21:16:33  来源:igfitidea点击:

how to use Flask Jinja2 url_for with multiple parameters

pythonflaskjinja2url-for

提问by Tiny Lin

I have a problem while using jinja2url_for()function.

我在使用jinja2url_for()函数时遇到问题。

I have a route like this:

我有一条这样的路线:

@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)

in jinja template file,i want to create a url which links to article_page,so i write like this:

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

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

but when I run this page, I get a error:

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

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

It seems like that the second parameter url_titlemissing. How can I use url_for()with multiple parameters correctly?

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

采纳答案by falsetru

According to url_fordocumentation:

根据url_for文档

If the value of a query argument is None, the whole pair is skipped.

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

Make sure that url_titleis not None.

确保url_title不是None

Or specify default value for url_titlein the article_pagefunction.

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

回答by Tr??ng ?inh Quang

You missed a dot, try that:

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

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