使用基本模板时如何避免重复上下文设置过程?

2023-12-13

使用时jinja2,基本“骨架”模板通常由许多其他模板扩展。

我的基本模板之一需要上下文中的某些变量,并且在任何使用此基本模板的地方都必须重复设置过程。

例如,我可能需要从数据库读取一些类别名称并将它们呈现为标题中的列表,现在我必须在使用基本模板的任何地方编写此查询。

使用时有哪些好方法可以避免重复此类代码jinja2?


您可以将上下文处理器添加到您的应用程序或蓝图中。这些将额外的值注入 Jinja 上下文中。这些不是任何视图的一部分,但将在请求上下文中运行,因此您可以访问视图中通常会出现的所有内容。

@app.context_processor
def base_context():
    return {
        'author': 'davidism',
        'last_update': interesting_function()
        'headers': db.query(MyModel.category).distinct().all()
    }

蓝图上添加的处理器仅适用于从该蓝图上的视图渲染的模板。

上下文传递给render_template函数将覆盖这些默认上下文值(如果它们具有相同的键)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用基本模板时如何避免重复上下文设置过程? 的相关文章

随机推荐

  • 将图像保存到媒体库 WP7

    我无法将图像保存到 Windows Phone 媒体库中 这是我的代码片段 public void SaveImageTo string fileName fileName jpg var myStore IsolatedStorageFi
  • Firestore 中可以使用多少个集合文档对?

    我有一个具有以下架构的应用程序 HOME gt Collection gt Document gt Collection gt Document 和代码 db collection coll doc doc collection subco
  • 元更改事件未触发

    我有一家商店 看起来像这样 Ext define GridGeneral store GridGeneralStore extend Ext data Store model GridGeneral model GridGeneralMod
  • 获取其他收件箱的参考

    我正在使用 Outlook 2007 并且有我的主邮箱 Tait Mark 我还在我的个人资料中添加了另一个邮箱 采购 请求 两者都显示为 Outlook 中的顶级文件夹 邮箱 泰特 马克 gt 对话历史记录 删除的项目 草稿 收件箱 垃圾
  • 在 WCF 中处理图像

    我有一个桌面应用程序 需要通过 TCP 协议向服务计算机上传 下载图像 起初 我将图像存储在文件系统中 但我需要在 MS SQL DB 中比较哪种解决方案更好 图片数量超过五十万 我还不知道照片尺寸是否有限制 如果您曾经这样做过 请写下您对
  • 在 JavaScript 中更改另一个函数中的变量

    我对 JavaScript 还很陌生 并且对变量和函数的一些属性遇到了麻烦 我想要发生的是有一个var在一个函数中定义 在另一个函数中更改值 然后将新值返回到最初定义它的函数 这是我制作的一个简单示例 function getIt var
  • 文本排序顺序的 MIN/MAX

    在 SQL Server 中 MIN 和 MAX 可以作用于不计算为数字的文本 返回具有最低或最高文本排序顺序的文本项 或者如 SQL Server 中所说的 排序顺序 是否可以在 Excel 中执行此操作 而无需使用实际排序的 UDF 例
  • malloc 和 calloc 与 std::string 之间的区别

    我最近开始接触 C 并且在使用 malloc 时遇到了问题 下面的代码不会打印出 成功 程序崩溃 退出代码为 0xC0000005 而如果我使用 calloc 则一切正常 int main std string pointer std st
  • 为什么使用 boost::multi precision::cpp_int 会影响这里的尾调用优化

    我有一些模板化代码 编译器可以对大多数数据类型进行尾部调用优化 但不能对其他数据类型进行尾部调用优化 代码实现了pow template
  • 如何在 gnuplot 中对箱线图异常值进行分组

    我有大量数据点 我尝试用箱线图绘制它们 但一些异常值是完全相同的值 并且它们表示在彼此旁边的一条线上 我发现如何设置gnuplot箱线图中异常值之间的水平距离 但这并没有太大帮助 因为这显然是不可能的 是否可以将异常值分组在一起 打印一个点
  • 如何撤消对 vim 中文本块的所有更改?

    是否可以选择一些带有视线的文本并撤消从一开始对其所做的所有更改 实际上 我是通过撤消所有拉动块的操作 然后将所有内容重做到最后一次修改 然后用拉动的文本替换该块来实现的
  • 如何从 Java 函数返回值?

    我正在尝试让以下程序运行 public class funWithNumbers public static void main String args int ten 10 int subend 7 int result ten sube
  • Android 图像位于 /assets 或 res/raw

    如果我想将一堆图像放入文件夹结构中 例如 我正在构建一个海滩应用程序 每个海滩都通过我的海滩详细信息活动显示 具体取决于从我的海滩列表中选择的海滩 然后我想显示来自该特定海滩的五张图像 每个海滩都会有一个文件夹 其名称与海滩的 id 相对应
  • 如何使用 Spring 4.0.6 全局设置 Hibernate 4.3.5.Final 的 FlushMode?

    我正在尝试使用 Hibernate 4 3 5 Final 和 Spring 4 0 6 升级我们的应用程序 我的应用程序中任何具有数据库写入操作的位置都会出现如下错误 Caused by org springframework dao I
  • JasperReports / iReport Designer:我可以有条件地显示乐队吗?

    我创建了一个报告如下 多个细节带 每个详细信息带包含 1 个表 每个表链接到 1 个数据集 每当查询的结果集返回空集 未找到结果 时 我可以隐藏详细信息带吗 我怎样才能做到这一点 在每个详细信息区域的 属性 中 您有一个名为 打印表达式 的
  • 更新到最新的 Angular cli 版本后,NG v 仍然显示旧版本号?

    我已发出以下命令 如图所示 我收到一条成功消息 说 Angular cli 已更新到 10 0 版本 但是当我运行 ng v 命令时 我得到了旧版本号 那么真的更新了吗 这里有什么问题呢 如何全局更新到最新版本 以便当我通过 cli 生成新
  • 将父级 ​​div 与浮动子级居中

    父级没有定义宽度 因为里面有未知数量的子级 为什么孩子会掉入新的队列以及如何预防 孩子们需要站在同一条线上 wrap position absolute left 50 top 50px height 40px transform tran
  • 防止 IE11 在 Angular 2 中缓存 GET 调用

    我有一个休息端点 它在 GET 调用上返回一个列表 我还有一个 POST 端点来添加新项目和一个 DELETE 来删除它们 这适用于 Firefox 和 Chrome POST 和 DELETE 则适用于 IE11 但是 IE11 中的 G
  • Matlab 中两个向量的直方图

    先谢谢您的帮助 我有两组平行向量 x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
  • 使用基本模板时如何避免重复上下文设置过程?

    使用时jinja2 基本 骨架 模板通常由许多其他模板扩展 我的基本模板之一需要上下文中的某些变量 并且在任何使用此基本模板的地方都必须重复设置过程 例如 我可能需要从数据库读取一些类别名称并将它们呈现为标题中的列表 现在我必须在使用基本模