Variable de plantilla de referencia dentro de la expresión Jinja

Resuelto asked hace 9 años • 1 respuestas

Tengo una ruta definida así:

@app.route('/magic/<filename>')
def moremagic(filename):
    pass

Y ahora en una plantilla quiero llamar a esa ruta url_for()así:

<h1>you uploaded {{ name }}<h1>
<a href="{{ url_for('/magic/<filename>') }}">Click to see magic happen</a>

Yo he tratado:

<a href="{{ url_for('/magic', filename={{ name }}) }}">Click to see magic happen</a>

Eso arroja unjinja2.TemplateSyntaxError: expected token ':' got }

¿Alguien puede sugerir cómo incluir lo {{ name }}que aparece en la plantilla url_for()para que cuando haga clic llame al correcto app.route?

 avatar Aug 15 '15 19:08
Aceptado

Todo lo que hay dentro {{ ... }}es una expresión similar a Python. No es necesario utilizar otro {{ ... }}dentro para hacer referencia a variables.

Suelte los corchetes adicionales:

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

(Tenga en cuenta que la url_for()función toma el nombre del punto final , no una ruta URL; el nombre predeterminado es el nombre de la función, moremagicen su ejemplo).

Martijn Pieters avatar Aug 15 '2015 12:08 Martijn Pieters