2012-02-23 8 views
6

Pracuję nad aplikacją przy użyciu bardzo łatwego do pobrania systemu Flask i wykorzystałem szablon jinja do napisania wiązki linków, które odpowiadają stronom w kolbie, które są definiowane przez coś takiego:zmienna jinja dla katalogu głównego z kolbą-aplikacją

@app.route(/<var1>/<var2>) 
... 
... 

w serwerze testowym te linki działają dobrze, jednak kiedy przenieść z serwera testowego do serwera za serwerem proxy otrzymuję problem gdzie href linki nie biorą pod uwagę dodatkowa nazwa katalogu wstawiona przez mój serwer proxy.

#where a link should read: 
server:/myapp/<var1>/<var2> 
# it acually puts out: 
server:/<var1>/<var2> 

mój jinja etemplate wygląda to tak, ale zastanawiam się, czy zamiast umieszczenie backslash istnieje sposób, aby umieścić zmienną, która określa katalog główny.

{% block navigation %} 
{% for record in db.values() %} 
<li><a href="/{{db.name}}/{{record.name}}">{{record.name}}</a></li> 
{% endfor %} 
{% endblock %} 

Każda pomoc zostanie bardzo doceniona. Dziękujemy zespołowi Flask!

Odpowiedz

6

Po pierwsze, jak @reclosedev powiedział, można wygenerować URL przy użyciu funkcji url_for (zakładając funkcję widoku nazywa myview:

<a href="{{ url_for('myview', var1=db.name, var2=record.name) }}"> 

Po drugie, jeśli jesteś za reverse proxy, owinąć aplikacja WSGI z this decorator, która aktualizuje środowisko żądań, aby Flask generował poprawne adresy URL:

+0

dziękuję alex, właściwie używam tego fragmentu, ale linki, które wygenerowałem w moim szablonie, nie zostały zaktualizowane nowymi lokalizacjami. – zach

3

Może szukasz funkcji url_for?

<li><a href="{{ url_for('view_func_name', 
         var1=db.name, 
         var2=record.name) }}">{{record.name}}</a></li> 
+2

Ponadto, jeśli korzystasz z odwrotnego proxy, sprawdź [ten fragment flakonu] (http://flask.pocoo.org/snippets/35 /). –

+0

@AlexMorega, prawdopodobnie ten fragment jest rozwiązaniem problemu OP i myślę, że powinien on zostać opublikowany jako odpowiedź. – reclosedev

+0

ok, dziękuję :) –

Powiązane problemy