flask-app根目录的jinja变量

zac*_*ach 6 python jinja2 flask

我一直在使用非常容易拾取的Flask系统开发一个应用程序,我使用了一个jinja模板来写出一堆链接,这些链接对应于Flask中的页面,这些链接由以下内容定义:

@app.route(/<var1>/<var2>)
...
...
Run Code Online (Sandbox Code Playgroud)

在测试服务器中这些链接工作得很好但是当我从测试服务器移动到代理服务器后面的服务器时,我遇到一个问题,其中href链接没有考虑我的代理插入的额外目录名称.

#where a link should read:
server:/myapp/<var1>/<var2>
# it acually puts out:
server:/<var1>/<var2>
Run Code Online (Sandbox Code Playgroud)

我的jinja etemplate看起来像这样,但我想知道是否有一种方法来放置一个指定根目录的变量而不是反斜杠.

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

任何帮助将不胜感激.谢谢Flask团队!

Ale*_*ega 6

首先,正如@reclosedev所说,你可以使用该url_for函数生成URL (假设调用了view函数myview:

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

其次,如果您在反向代理之后,请使用此装饰器包装WSGI应用程序,以更新请求环境,以便Flask生成正确的URL.