Jinja 找不到模板路径
Posted
技术标签:
【中文标题】Jinja 找不到模板路径【英文标题】:Jinja can't find template path 【发布时间】:2016-06-18 13:59:47 【问题描述】:我无法让 Jinja2 读取我的模板文件。
jinja2.exceptions.TemplateNotFound: template.html
配置 Jinja2 以加载模板的最简单方法 应用程序大致如下:
从 jinja2 导入环境,PackageLoader env = Environment(loader=PackageLoader('yourapplication', 'templates')) 这个 将创建一个具有默认设置的模板环境和一个 在模板文件夹中查找模板的加载器 你的应用程序 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
【问题讨论】:
【参考方案1】:您正在使用FileSystemLoader
class,它具有以下初始化参数:
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
class:
from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('frontdesk', 'templates'))
template = env.get_template('index.html')
在这种情况下,您需要确保 frontdesk
是 package - 换句话说,确保 frontdesk
目录中有 __init__.py
文件。
【讨论】:
另外,在 PackageLoader 类示例中,'templates'
是包含模板的目录的相对路径(相对于包 frontdesk
)。以上是关于Jinja 找不到模板路径的主要内容,如果未能解决你的问题,请参考以下文章
在为 ARM 模板部署创建的 Azure DevOps Pipeline 中找不到 JSON 文件路径
Django:Heroku 上的生产应用程序找不到带有“路径”urlpattern 的模板