我正在try 构建一个侧边导航并将其导入到一个基本的html文件中.

base.html中的代码如下所示:

<html lang="en">
  <head>
  </head>

  <body>
    <p>hello</p>

    {% include 'sidenav.html' %}

  </body>
</html>

然后我有一个通过代码构建导航的文件.相关代码如下:

## sidenav.py

import os

from flask import Flask, render_template

from jinja2 import Environment, BaseLoader

def build():
    env = Environment(loader = BaseLoader())
    t = env.get_template('sidenav.html')

那么__init__.py人就会有这样的经历:

import os

from flask import Flask

def create_app(test_config=None):
    from .layout.sidenav import build
    build()

我得到jinja2.exceptions.TemplateNotFound: sidenav.html

无论我将sidenav.py放在与__init__.py相同的级别,还是放在子文件夹中,都没有关系.我得到了同样的错误.

我希望可以在不通过路径传递所有参数的情况下构建这个Sideav.我不确定我会如何处理这件事.

推荐答案

下面是一个例子:

import os

from jinja2 import Environment, FileSystemLoader


def render_example():
    path = os.path.join(os.getcwd(), 'templates')  # or set full path to templates folder
    env = Environment(loader=FileSystemLoader(path))

    template = env.get_template('base.html')
    print(template.render())


render_example()

模板必须放在./templates文件夹中

Python相关问答推荐

如何根据情况丢弃大Pandas 的前n行,使大Pandas 的其余部分完好无损

将HTML输出转换为表格中的问题

在内部列表上滚动窗口

acme错误-Veritas错误:模块收件箱没有属性linear_util'

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

pyscript中的压痕问题

我如何根据前一个连续数字改变一串数字?

我的字符串搜索算法的平均时间复杂度和最坏时间复杂度是多少?

在极中解析带有数字和SI前缀的字符串

在输入行运行时停止代码

如何从pandas DataFrame中获取. groupby()和. agg()之后的子列?

polars:有效的方法来应用函数过滤列的字符串

判断Python操作:如何从字面上得到所有decorator ?

BeautifulSoup-Screper有时运行得很好,很健壮--但有时它失败了::可能这里需要一些更多的异常处理?

使用python playwright从 Select 子菜单中 Select 值

如何在Python中将超链接添加到PDF中每个页面的顶部?

合并相似列表

来自Airflow Connection的额外参数

pytest、xdist和共享生成的文件依赖项

将相应的值从第2列合并到第1列(Pandas )