我一直在使用非常容易拾取的Flask系统开发一个应用程序,我使用了一个jinja模板来写出一堆链接,这些链接对应于Flask中由这样的定义的页面:
@app.route(/<var1>/<var2>)
...
...
在测试服务器中这些链接工作正常但是当我从测试服务器移动到代理服务器后面的服务器时,我遇到了一个问题,即href链接没有考虑我的代理插入的额外目录名。 / p>
#where a link should read:
server:/myapp/<var1>/<var2>
# it acually puts out:
server:/<var1>/<var2>
我的jinja etemplate看起来像这样,但我想知道是否有一种方法来放置一个指定根目录的变量而不是反斜杠。
{% block navigation %}
{% for record in db.values() %}
<li><a href="/{{db.name}}/{{record.name}}">{{record.name}}</a></li>
{% endfor %}
{% endblock %}
非常感谢任何帮助。谢谢Flask团队!
答案 0 :(得分:6)
首先,正如@reclosedev所说,您可以使用url_for
函数生成URL(假设视图函数被称为myview
:
<a href="{{ url_for('myview', var1=db.name, var2=record.name) }}">
其次,如果您在反向代理之后,请使用this decorator包装更新请求环境的WSGI应用程序,以便Flask生成正确的URL。
答案 1 :(得分:3)
也许您正在寻找url_for
功能?
<li><a href="{{ url_for('view_func_name',
var1=db.name,
var2=record.name) }}">{{record.name}}</a></li>