2015-08-15 16 views
5

Mam trasa zdefiniowane tak:referencyjny szablon zmienna w ciągu wypowiedzi Jinja

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

A teraz w szablonie Chcę wywołać tę trasę korzystając url_for() tak:

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

próbowałem :

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

to rzuca jinja2.TemplateSyntaxError: expected token ':' got }

Czy ktoś może zasugerować, jak uzyskać {{ name }}, który pojawia się w szablonie do url_for(), tak aby po kliknięciu zadzwonić poprawne app.route?

Odpowiedz

10

Wszystko wewnątrz {{ ... }} jest wyrazem podobnym do Pythona. W celu odniesienia zmiennych nie trzeba używać innego {{ ... }}.

Drop dodatkowe wsporniki:

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

(Zauważ, że funkcja url_for() przyjmuje nazwę końcowym , a nie ścieżkę URL; domyślne nazwy do nazwy funkcji, moremagic w przykładzie).

+0

Hej, używam Django, a kiedy robię to samo co powyżej, otrzymuję TemplateSyntaxError. Mówi, że nie można sparsować pozostałej części: '(' static ', filename =' images/'+ card.id)' from 'url_for (' static ', filename =' images/'+ card.id)' Zasadniczo moja karta .id wartości są jak 1, 2, 3, 4 i tak dalej. I moje w statycznych/images/są pliki o nazwach 1.jpg, 2.jpg itd. ORAZ otrzymuję powyższy błąd. –

+0

@AnkushRaghuvanshi: to pytanie i odpowiedź dotyczy Jinja2, * nie * Django. Jinja2 to projekt oparty na szablonach Django, ale nie jest to ten sam projekt. –

+0

Zgadzam się. Pomyślałem, że powinienem wspomnieć, że używam Django dla wygody innych użytkowników, co może być w stanie mi pomóc, ponieważ tagi w tym pytaniu zawierają Flask, a nawet Python, nawet jeśli Python nie jest związany z tym technicznie. Niemniej jednak mam rozwiązanie tylko w oficjalnej dokumentacji Django -> https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#get-static-prefix –