4

我正在尝试为 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}} 

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

4

1 回答 1

11

使用块:

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

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

{% block title %}your custom title{% endblock %} 
于 2012-09-09T13:19:53.663 回答