how to use Flask Jinja2 url_for with multiple parameters
57,742
Solution 1
According to url_for
documentation:
If the value of a query argument is None, the whole pair is skipped.
Make sure that url_title
is not None
.
Or specify default value for url_title
in the article_page
function.
Solution 2
You missed a dot, try that:
url_for('.article_page', article_id=article.id, url_title=article.url_title)
Related videos on Youtube
Author by
Tiny Lin
Updated on October 21, 2020Comments
-
Tiny Lin over 3 years
I have a problem while using
jinja2
url_for()
function.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:
<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_title
missing. How can I useurl_for()
with multiple parameters correctly?-
Blender over 10 yearsThis happens if
article.url_title
isNone
. Make sure it's notNone
.
-