python-3.x 找不到模板路径

ehxuflar  于 2023-11-20  发布在  Python
关注(0)|答案(1)|浏览(188)

我无法让Jinja 2读取我的模板文件。
第一个月
配置Jinja 2为应用程序加载模板的最简单方法大致如下:

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

字符串
这将创建一个具有默认设置的模板环境和一个加载器,该加载器在yourapplication python包内的templates文件夹中查找模板。不同的加载器可用,如果你想从数据库或其他资源加载模板,你也可以编写自己的加载器。要从这个环境加载模板,你只需要调用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

tp5buhyn

tp5buhyn1#

您正在使用FileSystemLoader类,它具有以下init参数:

class FileSystemLoader(BaseLoader):
    def __init__(self, searchpath, encoding='utf-8', followlinks=False):

字符串
您使用两个参数初始化它:frontdesktemplates,这基本上没有多大意义,因为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是一个包-换句话说,确保您在frontdesk目录中有__init__.py文件。

相关问题