我可以使用一条路线渲染我可以在另一个模板中使用的模板吗?
我想像
@app.route('/tags/')
def tags():
return render_template('tags.html', tags=create_tags())
然后以某种方式从不同的模板调用路径。
<h2>Tags</h2>
{{ render('/tags/') }}
答案 0 :(得分:0)
您可以在模板中加入tags.html
模板。
{% include "tags.html" %}
您必须将tags
传递给您的模板,但这是实现此目的的方法。
答案 1 :(得分:0)
路由不渲染模板,函数可以。所有路线都是指向功能的URL。因此,对我来说显而易见的解决方案是使用一个返回渲染标记模板的函数:
def render_tags_template():
return render_template('tags.html', tags=create_tags())
然后我们想要将该函数与url“/ tags”
相关联app.add_url_rule('/tags', endpoint='tags', view_func=render_tags_template)
我们还希望能够在我们的模板中访问此功能。通过URL通过另一个请求访问它很可能是ajax的工作。所以我们必须将render_tags_template放到模板上下文中。
render_template('some_random_template.html', render_tags_template=render_tags_template
然后在你的some_random_template.html:
{{render_tags_template()}}
如果您不想显式传递render_tags_template,可以将其添加为全局模板:
app.jinja_env.globals['render_tags_template'] = render_tags_template
并在所有模板中自由使用,无需明确传递。
根据实际尝试做的事情,仅包含tags.html可能是最好和最简单的解决方案。使用函数生成内容可以提供更多的控制和灵活性。