我正在敲打这个问题并找不到答案:我想在AppEngine Python Jinja2应用程序的页面中使用相同的导航栏。
我尝试了下面的技巧,但没有任何作用,任何想法?
1)试图通过autoescape获取html:
在Python中:
include_html = "<h1> Try to insert HTML stuff </h1>"
...
main_template_values = {
'include_html': include_html,
}
html模板如下所示:
...
{{include_html}}
然后浏览器中显示的实际页面如下所示:
<h1> Try to insert HTML stuff </h1>
因此,我使用可见标签获得普通文本,而不是大胆的文本。由于某种原因,HTML标签不会以这种方式处理。
2)尝试过Javascript
我按照w3学校的例子创建了一个html页面:
<!DOCTYPE html>
<html>
<title>W3.JS</title>
<script src="https://www.w3schools.com/lib/w3.js"></script>
<body>
<h1> Testing w3-include:</h1>
<div w3-include-html="included_file.html"></div>
<script>
w3.includeHTML();
</script>
</body>
</html>
然后include_html.html文件如下所示:
<h1> Try to insert HTML stuff </h1>
如果我直接在浏览器中打开HTML页面,则可以使用。但是,当我使用此页面作为Jinja2模板时,它不起作用。围绕它的Googlig似乎Jinja2与javascript不兼容
所以,我的应用程序中有超过10个页面,所有页面共享相同的导航栏。这意味着对于导航栏的任何更改,我必须编辑10个html文件,这是错误的确定方法。
那么,如何将导航栏的html代码包含在我的页面模板中?
提前致谢!
答案 0 :(得分:2)
请尝试使用allert.java
声明,即
RecyclerViewAdapter
答案 1 :(得分:2)
Jinja是一个强大的渲染引擎。您可以使用其template inheritance功能,而不是单独设计每个页面。
Jinja最强大的部分是模板继承。模板 继承允许您构建一个基础“骨架”模板 包含站点的所有常见元素并定义块 子模板可以覆盖。
因此,创建一个文件navbar.tpl
,其中包含导航栏DOM的裸模板。然后,为应用程序本身创建一个基本模板,例如base.html
。在此文件中,您可以正确放置{% include 'navbar.tpl' %}
。并创建一些块,以便在应用程序的页面上放置内容。
现在,对于每个页面内容,您只需要{% extends 'base.html' %}
,然后覆盖您想要的特定内容块。
浏览链接文档以获得更好的示例。
答案 2 :(得分:1)
是的,使用jinja include更清洁。这样你就可以编辑一次,它随处可见。
但是,你的方法不起作用的原因是jinja将标签显示为文本。要将它们打印为HTML,您需要执行以下操作:
{{ include_html|safe }}