web-dev-qa-db-fra.com

comment utiliser Flask Jinja2 url_for avec plusieurs paramètres

toutes les personnes!

J'ai eu un problème pendant que j'utilisais la fonction jinja2 url_for ().

J'ai un itinéraire comme:

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

dans le fichier de modèle jinja, je veux créer une URL qui renvoie à article_page, alors j'écris comme ceci:

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

mais quand je lance cette page, j'obtiens une erreur:

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

il semble que le second paramètre, 'url_title', manque. Comment utiliser correctement url_for () avec plusieurs paramètres? Merci tout le monde!

10
Tiny Lin

Selon url_for documentation :

Si la valeur d'un argument de requête est None, la paire entière est ignorée.

Assurez-vous que url_title n'est pas None.

Ou spécifiez la valeur par défaut pour url_title dans la fonction article_page.

7
falsetru

Vous avez manqué un point, essayez ça:

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