How to use Flask Jinja2 url_for with multiple parameters

I have a problem when 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 the jinja template file, I want to create a URL that links to article_page, so I write 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 an error:

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

It looks like the second url_title parameter url_title missing. How to use url_for() with multiple parameters?

+13
source share
2 answers

According to url_for documentation :

If the value of the request argument is None, the entire pair is skipped.

Make sure url_title not None .

Or specify the default value for url_title in the article_page function.

+9
source

You missed the point, try:

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

All Articles