Maison > développement back-end > Tutoriel Python > Comment référencer correctement les variables de modèle dans les expressions Jinja `url_for` dans Flask ?

Comment référencer correctement les variables de modèle dans les expressions Jinja `url_for` dans Flask ?

Mary-Kate Olsen
Libérer: 2024-12-08 04:57:11
original
1021 Les gens l'ont consulté

How to Properly Reference Template Variables within Jinja `url_for` Expressions in Flask?

Référencement des variables de modèle dans les expressions Jinja

Dans les applications Web Flask, il est courant de générer dynamiquement des URL à l'aide de variables de modèle dans les expressions Jinja. Cependant, référencer des variables dans des expressions Jinja peut être difficile, comme le démontre le scénario suivant :

Considérons un itinéraire défini comme :

@app.route('/magic/<filename>')
def moremagic(filename):
    pass
Copier après la connexion

< p>Pour générer un lien vers l'itinéraire à partir d'un modèle, vous souhaiterez peut-être utiliser url_for() comme this:

<h1>you uploaded {{ name }}</h1>
<a href="{{ url_for('/magic/<filename>') }}">Click to see magic happen</a>
Copier après la connexion

Cependant, si vous devez insérer dynamiquement la valeur de {{name}} dans l'URL, cette approche entraîne une erreur de syntaxe Jinja2.

La solution à ce problème réside dans la compréhension du comportement des expressions Jinja. À l'intérieur de {{ ... }}, tout est traité comme des expressions de type Python. Par conséquent, vous n'avez pas besoin d'utiliser des {{ ... }} imbriqués pour référencer des variables.

<h1>you uploaded {{ name }}</h1>
<a href="{{ url_for('moremagic', filename=name) }}">Click to see magic happen</a>
Copier après la connexion

Dans ce code corrigé, les crochets supplémentaires autour de l'expression Jinja sont supprimés et la variable de nom est passé en argument à la fonction url_for().

Notez que url_for() nécessite le nom du point final, qui est le nom de la fonction (moremagic) dans ce cas. Le chemin de l'URL lui-même n'est pas requis.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal