【问题标题】:a jinja variable for flask-app root directoryflask-app 根目录的 jinja 变量
【发布时间】:2012-02-23 01:27:54
【问题描述】:

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

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

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

#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 团队!

【问题讨论】:

    标签: python flask jinja2


    【解决方案1】:

    首先,正如@reclosedev 所说,您可以使用url_for 函数生成URL(假设视图函数称为myview

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

    其次,如果您使用反向代理,请使用更新请求环境的this decorator 包装 WSGI 应用程序,以便 Flask 生成正确的 URL。

    【讨论】:

    • 感谢 alex,我实际上正在使用该 sn-p,但我在模板中生成的链接没有更新为新的位置。谢谢。
    【解决方案2】:

    也许您正在寻找url_for 函数?

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

    【讨论】:

    • 另外,如果您使用反向代理,请查看this flask snippet
    • @AlexMorega,可能这个 sn-p 是 OP 问题的解决方案,我认为它应该作为答案发布。
    猜你喜欢
    • 2020-10-20
    • 1970-01-01
    • 2014-07-22
    • 2019-01-02
    • 1970-01-01
    • 2021-08-15
    • 2020-09-20
    • 1970-01-01
    • 2017-06-23
    相关资源
    最近更新 更多