how to use Flask Jinja2 url_for with multiple parameters

故事扮演 提交于 2019-12-31 22:23:15

问题


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 use url_for() with multiple parameters correctly?


回答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.




回答2:


You missed a dot, try that:

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


来源:https://stackoverflow.com/questions/20810630/how-to-use-flask-jinja2-url-for-with-multiple-parameters

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!