2015-08-15 5 views
5

Ho un percorso definito in questo modo:di riferimento variabile di modello all'interno di un'espressione Jinja

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

E ora in un modello voglio chiamare quel percorso utilizzando url_for() in questo modo:

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

ho provato :

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

che getta una jinja2.TemplateSyntaxError: expected token ':' got }

Qualcuno può suggerire come ottenere ilvisualizzato nel modello nello url_for() in modo che quando faccio clic chiamo il app.route corretto?

risposta

10

Tutto all'interno di {{ ... }} è un'espressione simile a Python. Non è necessario utilizzare un altro {{ ... }} al suo interno per fare riferimento a variabili.

cadere la parentesi in più:

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

(Si noti che la funzione url_for() prende il nome dell'endpoint , non un percorso URL; le impostazioni predefinite nome al nome della funzione, moremagic nel tuo esempio).

+0

Ehi, sto usando Django e, quando sto facendo lo stesso come sopra, ricevo un errore TemplateSyntaxError. Dice: Non posso analizzare il resto: '(' static ', filename =' images/'+ card.id)' da 'url_for (' static ', filename =' images/'+ card.id)' Fondamentalmente la mia carta I valori di .id sono come 1, 2, 3, 4 e così via. E il mio nel mio statico/immagini/ci sono file denominati come 1.jpg, 2.jpg e così via E sto ricevendo l'errore di cui sopra. –

+0

@AnkushRaghuvanshi: questa domanda e risposta si applica a Jinja2, * not * Django. Jinja2 è un progetto basato su modelli di Django ma non è lo stesso progetto. –

+0

Sono d'accordo. Ho pensato che dovrei menzionare che sto usando Django per la comodità degli altri utenti che potrebbero essere in grado di aiutarmi visto che i tag in questa domanda contengono anche Flask e anche Python, anche quando Python non è correlato tecnicamente. Tuttavia, ho trovato la mia soluzione solo sulla documentazione ufficiale di Django -> https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#get-static-prefix –

Problemi correlati