我无法让 Jinja2 读取我的模板文件。
jinja2.exceptions.TemplateNotFound: template.html
配置 Jinja2 加载模板的最简单方法 应用程序看起来大致如下:
from jinja2 import Environment, PackageLoader env = Environment(loader=PackageLoader('yourapplication', 'templates'))
这将创建一个具有默认设置的模板环境 一个加载器,用于在模板文件夹中查找模板
python 包。有不同的装载机可供选择 如果您想从以下位置加载模板,您也可以编写自己的模板 数据库或其他资源。从此加载模板 环境你只需要调用yourapplication
方法即可 然后返回加载的模板:get_template()
template = env.get_template('mytemplate.html')
env = Environment(loader=FileSystemLoader('frontdesk', 'templates'))
template = env.get_template('template.html')
我的树(我已经激活了 venv @frontdesk )
.
├── classes.py
├── labels.txt
├── payments.py
├── templates
├── test.py
└── venv
FileSystemLoader
类,它具有以下初始化参数:
class FileSystemLoader(BaseLoader):
def __init__(self, searchpath, encoding='utf-8', followlinks=False):
您使用 2 个参数初始化它:
frontdesk
和 templates
,这基本上没有多大意义,因为 templates
字符串将作为 encoding
参数值传递。如果您想继续使用 FileSystemLoader
作为模板加载器,请这样使用:
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('frontdesk/templates'))
template = env.get_template('index.html')
PackageLoader
类:
from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('frontdesk', 'templates'))
template = env.get_template('index.html')
在这种情况下,您需要确保
frontdesk
是一个 package - 换句话说,确保 __init__.py
目录中有 frontdesk
文件。