gpt4 book ai didi

python - 如何在我的页面之间共享导航栏?应用引擎 python Jinja2

转载 作者:太空宇宙 更新时间:2023-11-04 08:40:35 24 4
gpt4 key购买 nike

我正在为这个问题苦思冥想,却找不到答案:我想在我的 AppEngine Python Jinja2 应用程序的页面中使用相同的导航栏。

我尝试了以下技巧但没有任何效果,有什么想法吗?

1) 试图通过自动转义获取 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 模板时,它不起作用。谷歌搜索似乎 Jinja2 与 javascript 不兼容

所以,我的应用程序中有 10 多个页面,所有页面都共享同一个导航栏。这意味着对于导航栏的任何更改,我都必须编辑 10 个 html 文件,这肯定会导致错误。

那么,如何将导航栏的 html 代码包含到我的页面模板中呢?

提前致谢!

最佳答案

Jinja 是一个强大的渲染引擎。您可以利用它的 template inheritance,而不是单独设计每个页面。功能。

The most powerful part of Jinja is template inheritance. Template inheritance allows you to build a base “skeleton” template that contains all the common elements of your site and defines blocks that child templates can override.

因此,创建一个文件 navbar.tpl,其中包含导航栏 DOM 的裸模板。然后,为应用程序本身创建一个基本模板,类似于 base.html。在此文件中,您将正确放置 {% include 'navbar.tpl' %}。并创建一些 block ,用于在应用程序的页面上放置内容。

现在,对于每个页面内容,您只需{% extends 'base.html' %} 然后覆盖您想要的特定内容 block 。

浏览链接的文档以获得更好的示例。

关于python - 如何在我的页面之间共享导航栏?应用引擎 python Jinja2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45239374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com