如何获取 jinja2 模板中所有变量的列表

2024-01-23

我正在尝试获取模板中所有变量和块的列表。我不想创建自己的解析器来查找变量。我尝试使用以下代码片段。

from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('gummi', 'templates'))
template = env.get_template('chat.html')

template.blocks是 dict,其中键是块,如何获取块内的所有变量?


由于没有人回答这个问题,而我找到了答案

from jinja2 import Environment, PackageLoader, meta
env = Environment(loader=PackageLoader('gummi', 'templates'))
template_source = env.loader.get_source(env, 'page_content.html')
parsed_content = env.parse(template_source)
meta.find_undeclared_variables(parsed_content)

这将产生未声明变量的列表,因为这不是在运行时执行的,它将产生所有变量的列表。

注意:这将生成 html 文件,其中包含使用include and extends.

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

如何获取 jinja2 模板中所有变量的列表 的相关文章

随机推荐

  • 如何删除 php 字符串中的%符号

    我需要从目录中的文件或图像名称中删除 符号 我使用哪个字符串 oldfile wallpapers temp uploaded file newfile wallpapers temp uploaded trim str replace f
  • 记录还是不记录?

    我现在正在构建一个程序 它是一个电子书管理器 阅读器 组织者和出版商 这也是一个电子书传输 到像 Kindle 这样的电子阅读器 但我正在开发它 一个问题突然出现在我的脑海中 日志或不 然后我开始考虑日志 由于许多程序都会记录操作 我开始寻
  • 使用Python os.walk来识别文件列表[重复]

    这个问题在这里已经有答案了 可能的重复 在Python中 在具有特定扩展名的目录中构建文件列表的最快方法 https stackoverflow com questions 8625908 in python fastest way to
  • 用于 C# 的 SCIM(跨域身份管理系统)库

    SCIM 标准的创建是为了通过定义表示用户和组的架构以及用于所有必要的 CRUD 操作的 REST API 来简化云中的用户管理 它旨在取代旧的 SPML 协议 有没有 成熟 的 C 库 我在 google 上搜索的大部分内容都是针对 Ja
  • 错误:ld.so:无法预加载对象 LD_PRELOAD:忽略

    我使用的是ubuntu 12 04 每次我启动 bash 终端以及每次输入完命令 并按 Enter 键 时 我都会收到以下消息 错误 ld so 对象 usr lib liblunar calendar preload so 来自 LD P
  • 将弹出窗口位置锁定到元素,或伪造带有图层的弹出窗口,以便在 ItemsControl 中进行就地编辑

    我想要实现的本质上是对数据绑定对象进行就地编辑ItemsControl在 wpf 中 my ItemsControl是一个水平的WrapPanel包含用户控件的多个实例 NameControl 它显示为带有人名的粉红色小字形 看起来像这样
  • C# REPL 工具;类似控制台的快速编译工具

    很多时候 我启动一个新的 Visual Studio 实例 只是为了创建一个具有一些输出和 或输入的控制台应用程序 这是一个临时沙箱 我用它来测试方法或其他东西 并在几分钟后关闭 您能想到任何工具来替代它吗 我曾经有一个具有两个文本字段的应
  • Model.find().then() 在实际加载记录之前触发

    我想加载整个集合 然后只剥离记录以一次用作模型 而不是每次都与服务器进行往返 我已经弄清楚如何使用 Ember Deferred 返回承诺 但我无法在正确的时间得到解决的承诺 以下代码每次都只输出 Found 0 App PersonRou
  • watir-webdriver 在保持浏览器打开的情况下更改代理

    我正在 Ruby 中使用 Watir Webdriver 库来检查一些页面 我知道我可以使用代理通过代理连接 profile Selenium WebDriver Firefox Profile new create a new profi
  • numpy 矩阵到 pandas 系列

    这是一个简单的问题 我有一个 numpy 矩阵 A 我想将其转换为数据帧 系列 中的列 保留矩阵的多重索引 我的意思是 矩阵中的 i j 位置将转换为 pandas 中的 i j 行索引 In 68 A np array 1 2 3 4 拿
  • 在开源项目中包含 Highcharts [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想包括高图表 http www highcharts com 开源项目中的库 scala笔记本 https github com Ole
  • 如何将多个 *.zip 存档文件解压缩到单独的文件夹中?

    我用 Google 搜索 但没有找到适用于 Windows 的内容 如何将多个文件提取到多个文件夹中 例如 a zip b zip and c zip进入文件夹a b and c 我正在寻找命令提示符命令或批处理文件解决方案 Thanks
  • 我可以在界面生成器中为 NSTextField 的文本添加下划线吗?

    我可以在界面生成器中为 NSTextField 的文本添加下划线吗 到目前为止 我只能改变它的颜色 有没有办法加下划线 thanks 仅适用于 iOS 是的 设置属性文本 然后选择文本 单击鼠标右键 gt 字体 gt 下划线
  • 如何将两个过程合二为一?

    只是想知道是否有一种语法快捷方式可以获取两个过程并将它们连接起来 以便将一个过程的输出传递给另一个过程 相当于 a gt x x 1 b gt x x 10 c gt x b a x 当处理诸如此类的事情时 这会派上用场method abc
  • mysql tinyint(2) 与学说的布尔值映射不正确

    我使用 symfony2 和命令对数据库进行了逆向工程 php app console doctrine mapping convert php app console doctrine mapping import php app con
  • Android:setContentView() == getViewInflate().inflate()?

    我尽我最大的努力想出一种巧妙的方法来清理成堆的东西Blah blah Blah this findViewById R id blah 否则会污染我的小 Activity 的字段和 onCreate 方法 为此 我觉得我不应该对 XML 中
  • 当模块同名时导入 python 包

    我有一个模块blah time我在正常时间和日期操作周围进行一些健全性检查和包装函数 import time def sleep n time sleep n 当我打电话时sleep 它只会抛出最大递归错误 我猜命名空间是错误的 所以我尝试
  • HAVING 子句后面可以有 WHERE 子句吗?

    是否可以在 HAVING 子句后使用 WHERE 子句 我首先想到的是子查询 但我不确定 附 如果答案是肯定的 您能举一些例子吗 不 不在同一个查询中 The where子句位于having和group by 如果您想在分组之前过滤掉记录
  • 如何添加窗口消息事件监听器-Android WebView

    如何添加事件监听器来处理window message事件在一个WebView 我试过这个 webView evaluateJavascript window addEventListener message function e Andro
  • 如何获取 jinja2 模板中所有变量的列表

    我正在尝试获取模板中所有变量和块的列表 我不想创建自己的解析器来查找变量 我尝试使用以下代码片段 from jinja2 import Environment PackageLoader env Environment loader Pac