在我的app.py文件中,我将导航存储在dict中。键是主导航键,值是子菜单。
navigation = {"Search": ["Google","Yahoo","Bing"]}
在我的layout.html模板(我的主模板文件)中,我想调用dict来生成导航。对我而言,这样做是有意义的,因为它将贯穿每一页。但是,对于我所拥有的每个视图,我都必须定义“导航”。这似乎是多余的和不必要的。
这引出了我的问题,构建网站的适当方式是什么。我不想硬编码每个链接。如果我决定更改应用程序提供的内容,我希望更改在整个站点级联到我正在使用导航词典的所有其他区域。
结构示例:
#app.py
navigation = {"Search": ["Google","Yahoo","Bing"]}
def my_view():
return render_template('my_view.html')
#layout.html
{% for link in navigation %}
{{ link }}
{% endfor %}
要解决我的问题,我只需将导航全局添加到视图中。
return render_template('my_view.html', navigation=navigation)
我不想为每个视图添加导航。感觉多余,特别是当你可以有几十个观点时。
答案 0 :(得分:1)
看起来你正在使用Flask。如果您将字典添加到应用程序的配置中,则可以在模板中调用该字典(Jinja将变量config
识别为应用程序的配置),而不必将其传入。
#app.py
app.config['navigation'] = {"Search": ["Google","Yahoo","Bing"]}
def my_view():
return render_template('my_view.html')
#layout.html
{% for title, name in config.navigation.iteritems() %}
{{ title }}, {{ name }}
{% endfor %}
(我也让你的布局迭代了dict,而不仅仅是键 - 它看起来更像是你想要的。)