python - Flask/Jinja2 - 包含相对于当前模板的模板

标签 python flask jinja2

是否有引用本地文件的语法?例如

不必写:

{% include 'user/project/task/task_detail/tab.html' %}

我想写(从与 tab.html 位于同一目录中的模板):

{% include './tab.html' %}

但上面提出了 jinja2.exceptions.TemplateNotFound

最佳答案

您可以继承 Jinja 的环境并覆盖 join_path() 方法以支持相对于当前目录的导入路径。

class RelativeEnvironment(jinja2.Environment):
    """Override join_path() to enable relative template paths."""
    def join_path(self, template, parent):
        return os.path.join(os.path.dirname(parent), template)

但是请注意,Jinja 的查找模板机制旨在消除模板路径的歧义。

您可以在 https://jinja.palletsprojects.com/en/2.10.x/api/#jinja2.Environment.join_path 阅读更多内容

这个问题可能与 How to include a template with relative path in Jinja2 重复

关于python - Flask/Jinja2 - 包含相对于当前模板的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56670309/

相关文章:

javascript - 如何使用 HTML/Javascript 传递 URL 参数

python - py2exe com dll问题

python - 精确的单词匹配并显示在列中

python - 将 Flask-SQLAlchemy 中的模型分离到另一个文件会破坏 PyDev 导入检测

python - 移动 Flask-Restplus Swagger API 文档

google-bigquery - 在与具有不同架构的表别名相关的单个 model.yml 上运行 dbt 测试

python - 如何优化 Flask 的 render_template() 模板

Python 3 : EOF when reading a line (Visual Studio Code)

python - (Python新手求助)getch?

python - 在流式传输 Flask 响应时保持 SQLAlchemy session 处于事件状态