Jinja 对可变内容进行嵌套渲染

2024-04-15

假设我在变量 X 中有实际的 jinja 模板代码。假设 X 的内容是“{{ some_other_variable }}”。

如何在渲染 X 内容的同时显示 X?

例如,这不起作用:

{{ X }}

因为它只是将其渲染到屏幕“{{ some_other_variable }}”而不是 some_other_variable 的内容。

我这样做的原因是我有一个网站,(受信任的)用户可以在其中创建帖子,这些帖子本身可能包含 jinja 模板代码。视图页面显示这些帖子,但由于上述问题,直接呈现它们,而不是按照我的意愿替换变量。


我知道有点晚了:)但这里有一个不影响模板代码的解决方案:

import jinja2
def recursive_render(tpl, values):
     prev = tpl
     while True:
         curr = jinja2.Template(prev).render(**values)
         if curr != prev:
             prev = curr
         else:
             return curr

测试运行:

>>> recursive_render("Hello {{X}}!", dict(X="{{name}}", name="world"))
u'Hello world!'

请注意,这不是很有效,因为每次迭代都必须从头开始重新解析模板。

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

Jinja 对可变内容进行嵌套渲染 的相关文章

随机推荐

  • 将图像添加到 R 中的类似表格的输出

    我有一个简单的数据结构 案例是国家 地区 对于每个国家 地区我有几个数字变量 就像这样 dat lt data frame country c Belgium Germany Holland Ireland Var1 1 4 Var2 11
  • 使用 jQuery Validate 插件,如何将错误消息字符串包装在跨度中

    有谁知道如何将内部错误字符串包装在跨度中 我正在为我的表单使用 jQuery Validate 插件 并在标签标记中显示默认的错误消息 这目前还不错 例子
  • 设计 config.timeout_in 不起作用

    我无法使用初始化器 devise rb 中的设计会话超时来使会话超时 I set config timeout in 1 minute 在initializers devise rb 中 我使用一名用户登录并闲置了2 分钟 这假设会使当前会
  • 如何检查当前应用程序进程是否在 Laravel 的队列环境中运行

    我通过特征将全局作用域应用于我的模型 但我不希望在从 Redis 队列调用 处理模型时应用全局作用域 如何检测当前实例是否是队列进程 就像我们有这个 if App environment local The environment is l
  • Android Studio - 无法找到请求目标的有效认证路径

    我收到这个错误 Gradle project name project refresh failed Unable to find valid certification path to requested target 当我在 Andro
  • Where().Count() 和 Count() 之间的区别

    using DBEntities db new DBEntities var employeeAgedAbove30 db Employees Where s gt s Age gt 30 Count Method 1 employeeAg
  • 使用 Sequelize 的多对多关系的简单示例

    我正在尝试使用 Sequelize 构建表之间多对多关系的简单示例 然而 这似乎比我预期的要棘手得多 这是我目前拥有的代码 db js文件导出 Sequelize 连接实例 const Sequelize require sequelize
  • 计算圆形数量级

    对于一个简单的项目 我必须使大数字 例如 4294967123 可读 因此我只写带有前缀的前几个数字 4294967123 gt 4 29G 12345 gt 12 34K 等 代码 简化 如下所示 const char postfixes
  • 从 Cydia 安装调整后重新启动

    我使用 DHowett 的 Theos 对应用程序和 mobilesubstrate 进行了调整 Tweak是应用程序的一个子项目 我在 iPhone 上测试过 一切正常 然后我创建了一个 Cydia 存储库并将我的项目加载到其中 问题是当
  • 未捕获的语法错误:意外的令牌导出

    我用过创建反应应用程序对于我的项目 我收到一个错误 未捕获的语法错误 意外的令牌导出 错误就在这段代码中 export const ENGLISH lang en messages nav translatedMessage Social
  • 使用 Apache Maths 进行多项式回归 (Java)

    有人可以帮我用 Apache Math 库进行多项式回归 2 阶 吗 以下数据应给出此方程 39 79 x 2 497 66 x 997 45 由 Excel 计算 r2 0 9998 coding style from http comm
  • 无法通过 AKS 上的 Azure 流量管理器和 Nginx Ingress 访问服务

    我在两个不同的区域有两个 AKS 集群作为主要集群和辅助集群 我想使用 Azure 流量管理器在主集群和辅助集群上进行基于优先级的端点监控和故障转移机制 我有两个服务 A 和 B 它们在相对路径上路由 服务 a and 服务 b分别 我在每
  • 如何在 python 3 及更高版本中永久删除文件?

    我想永久删除我用 python 代码创建的文件 我知道 os remove 等 但找不到任何特定的内容来永久删除文件 不想用未使用的文件填充垃圾箱 os remove已经是您正在寻找的了 它不会将东西发送到垃圾箱 它只是删除它们
  • 苹果商店拒绝iPhone申请的原因[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 谁能帮我了解苹果商店拒绝或提出反对提交任何iPhone申请的可能原因 以下是可能的原因 非官方的 从这里 http 10base t co
  • 如何将字节数组作为 UDT 属性从 VB6/VBA 传递到 C# COM DLL?

    我有一个 C 库 我试图将其公开给 VBA 我可以很好地将参数传递给函数 即 ref byte someArray 但传递对象或结构是行不通的 如果我尝试将字节数组作为类的属性传递 我会在 VB 中收到以下错误 函数或接口标记为受限 或者函
  • 导入 CSV,用 ; 分隔而不是 PowerShell

    我正在使用 CSV 来存储一些我想在 Powershell 中使用的信息 为了使 CSV 更 可读 我决定将每条信息放入单独的字段中 如果我使用import csv在powershell中 返回是这样的 Test1 Test2 Test3
  • Cakephp Auth: $this->Auth->login错误消息

    我正在使用身份验证组件 我在 beforeFilter 中设置 this gt Auth gt loginError 但我还有另一种可能性 如果用户输入的用户名和密码正确 但 User status pending 我怎样才能显示不同的消息
  • 如何限制 UITabBarController 上的选项卡数量?

    我有一个带有 UITabBarController 的 iPhone 应用程序 一切都很好 该应用程序的选项卡数量超出了显示屏纵向宽度所能显示的选项卡数量 因此我们总共看到 5 个选项卡 最后一个是 更多 选项卡 问题是 我们希望将一些 不
  • Android点击通知未打开附加的Activity

    我想在单击状态栏上的通知时打开一个活动 我在 StackOverflow 上看到过这个答案 但这些答案都不适合我 此问题仅出现在 Lollipop 设备上 最好的重现方法是 1 启动应用程序 2 后台应用程序 3 接收推送通知 4 单击通知
  • Jinja 对可变内容进行嵌套渲染

    假设我在变量 X 中有实际的 jinja 模板代码 假设 X 的内容是 some other variable 如何在渲染 X 内容的同时显示 X 例如 这不起作用 X 因为它只是将其渲染到屏幕 some other variable 而不