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
how to use Flask Jinja2 url_for with multiple parameters
提问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_title在article_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)

