【问题标题】:Jinja2 Default Page TitleJinja2 默认页面标题
【发布时间】:2012-09-09 13:08:11
【问题描述】:

我正在尝试为 Flask 应用程序中的所有页面设置默认页面标题。

我想将它插入到默认布局模板中。我的设置中有一个网站名称。

<title>{{title}}</title}}

问题是,我似乎无法将站点名称从设置导入到布局模板。

<title>{{settings.SETTING}}</title}}

类似的变体不起作用。

有没有简单的方法来做到这一点?我不想在我的控制器中为每个动作设置标题,合乎逻辑的方法是从我的设置转到模板。我只是现在没有办法,任何意见表示赞赏。

编辑:

我不想编写扩展程序,我看到我的应用程序的另一部分正在使用扩展程序将变量拉入模板,但编写整个扩展程序有点超出我当时的时间投入。

编辑:

def page_title(title):
    return settings.SITE_NAME

app.jinja_env.filters['page_title'] = page_title

在模板中:

{{ title | page_title}} 

这很接近,我想设置标题或使用默认值覆盖,这是可行的第一步

【问题讨论】:

    标签: python templates flask jinja2


    【解决方案1】:

    使用块:

    <title>{% block title %}{{ settings.SETTING }}{% endblock %}</title>
    

    然后,如果您想更改标题,您可以简单地在从基本模板继承的模板中覆盖该块。

    {% block title %}your custom title{% endblock %} 
    

    【讨论】:

    • 好的,这是一个好的开始,我更喜欢这个而不是我自己的解决方案,但我有一个问题是“设置”无法访问并产生错误,即我原来的问题是我'无法读取设置-->模板。
    • 啊,我只需使用 app.config 即可,它在模板中以 config 的形式提供。否则,您需要将settings 添加到您的模板上下文中:flask.pocoo.org/docs/templating/#context-processors
    • 如果我使用 {{ config['NAME'] }} 确实会出现这种情况,所以我现在就这样做。
    • {{ config.NAME }} 会更好
    猜你喜欢
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 2020-09-05
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多