Jinja 找不到模板路径

问题描述 投票:0回答:1

我无法让 Jinja2 读取我的模板文件。

jinja2.exceptions.TemplateNotFound: template.html

配置 Jinja2 加载模板的最简单方法 应用程序看起来大致如下:

from jinja2 import Environment, PackageLoader 
env = Environment(loader=PackageLoader('yourapplication', 'templates'))

这将创建一个具有默认设置的模板环境 一个加载器,用于在模板文件夹中查找模板

yourapplication
python 包。有不同的装载机可供选择 如果您想从以下位置加载模板,您也可以编写自己的模板 数据库或其他资源。从此加载模板 环境你只需要调用
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
python-3.x virtualenv jinja2
1个回答
16
投票

您正在使用

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
文件。

© www.soinside.com 2019 - 2024. All rights reserved.