如何使 Jinja2 中的 tojson() 过滤器输出 Unicode 而不是转义序列?

2024-01-20

我的模板是用于JS的

let SETTINGS = {{settings|tojson(4)}};

我的设置是一个字典{'name': 'Russian name Саша', 'id': 12345}。如果我渲染它,我会得到:

let SETTINGS = {
    "name": "Russian name \u0421\u0430\u0448\u0430",
    "id": 12345
}

我需要获取非转义的 unicode 字符。我可以用同样的方式在 python 中使用

json.dumps(data, encure_ascii=False)

But tojson()过滤器只接受一个参数(缩进)。


有一种方法可以提供剩余参数tojson() filter.

从 Jinja 2.9 开始policies https://jinja.palletsprojects.com/en/2.11.x/api/#policies可以在影响过滤器和其他模板构造行为的环境中进行配置。可以通过更改策略属性的一些键来完成。

对于你的情况有json.dumps_kwargs政策。这是你必须做的:

env = jinja2.Environment()
env.policies['json.dumps_kwargs']['ensure_ascii'] = False

此修改后的环境不会转义 unicode 符号。

结果可以在 JS 中安全使用,无需额外转义。

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

如何使 Jinja2 中的 tojson() 过滤器输出 Unicode 而不是转义序列? 的相关文章

随机推荐

  • 无法在 Angular 9 中进行默认导入

    我变了tsconfig json通过添加此属性 esModuleInterop true allowSyntheticDefaultImports true 为了能够导入 npm 包import as ms from ms 但我仍然收到此错
  • 如何从 .sikuli 文件夹中检索代码?

    当我打开一个 sikuli文件夹 里面只有图像 所以我想知道是否有任何方法可以在不使用 Sikuli IDE 的情况下查看或检索 Sikuli 代码 我可以从 sikuli文件夹 根据文档 http doc sikuli org devs
  • 没有事务的 JPA 更新查询 - 事务是强制性的吗?

    我正在尝试使用 JPA 通过本机查询进行插入 但我不想创建事务 Query query em createNativeQuery INSERT INTO person id firstname lastname VALUES 1 Ronni
  • iOS 8 CGAffineTransformMakeScale + 自动布局不再工作

    似乎有一些帖子与我的问题相关 但似乎没有任何帮助 使用自动布局时如何调整 CALayer 的锚点 https stackoverflow com questions 12943107 how do i adjust the anchor p
  • 如何使用 IN 条件访问 SQLite.swift 中的 FTS 表

    我正在尝试使用 SQLite swift 查询 FTS 表 之前我在Android上做过 https stackoverflow com questions 29815248 full text search example in andr
  • Scala Future 和 java 8 CompletableFuture

    的简介CompletableFuturesJava 8 带来了可用的语言功能scala concurrent Future例如一元变换 有什么区别 以及为什么 Scala 开发人员应该更喜欢 Scala Futures 而不是 java 8
  • 防止 Web 应用程序中同时发生事务

    我们有一个 Web 应用程序 它是一个游戏 其中包含许多不同的表单和元素 它们充当按钮并触发服务器上的一些操作 问题是 如果用户单击按钮太快或在两个选项卡中打开网站 然后同时发出一些操作 有时可能会混淆我们的应用程序 我们有一些基本的保护
  • 在 S3 存储桶之间移动文件的最佳方式?

    我想每天将一些文件从生产存储桶复制到开发存储桶 例如 复制 Productionbucket feed feedname date 到developmentbucket feed feedname date 由于我想要的文件在文件夹结构中太
  • 多个 RTSP 流不工作

    我在 Activity 中使用了 4 个 VideoView 如果 uri1 可用且其他 uri 不可用 则意味着所有视频视图都显示 uri1 的视频 如果其他 uri 可用但 uri1 未启动 则意味着所有视频视图均未显示任何内容 指导我
  • 打开 Chrome 或 Firefox,无需选项卡和其他菜单项,并设置屏幕位置和大小

    我需要在设定的位置启动 Chrome 或 Firefox 具有设定的大小 并且没有选项卡和其他菜单项 最终目标是一个桌面图标 我可以单击桌面图标以在桌面上的 x y 处获得一个 X 宽 Y 高的窗口 显示特定页面 而无需将这些设置永久保留在
  • vc++ 应用程序中的看门狗

    我写了一个简单的vc 后台应用程序 我正在尝试的就像一个看门狗服务 可以监视应用程序是否正在运行 如果应用程序崩溃 那么服务应该启动应用程序 为了通过 Windows 安装程序创建安装程序 我仅使用 app exe 和 app dll 是否
  • WPF - 绑定到菜单图标

    我有一个包含菜单的用户控件 我需要将 Menu Icon 绑定到 UserControl 的属性 但它不起作用 代码是这样开始的
  • 从可执行文件创建 Windows 服务

    是否有任何快速方法可以根据给定的可执行文件创建 Windows 服务 并在启动时启动它 要从可执行文件创建 Windows 服务 您可以使用sc exe sc exe create
  • Code OSS 和 Visual Studio Code 之间的差异

    正如开发商所说here https github com Microsoft vscode issues 60 issuecomment 161792005 所有这一切的最酷之处在于 您可以选择在我们的许可下使用 Visual Studio
  • 如何实现跨应用导航并导航回Fiori launchpad主页?

    在我们公司 我们建立了 Fiori 启动板 在其中 我们配置了一个链接到自定义开发的 SAPUI5 应用程序的磁贴 该应用程序作为 BSP 部署在服务器上 我们花了很长时间 但使用该应用程序中的路由器模式 我们成功地实现了从启动板磁贴到自定
  • 有没有脚本 SVG 编辑器?

    我想使用某种脚本语言 最好是 Python 编辑 SVG 文件 特别是 我想合并两个 SVG 文件 添加一些注释 并将它们排列在更大的图像中 有没有可用于此类目的的软件 Thanks Bartosz UPDATE 我最终决定使用nosklo
  • 网页字体大小中的px到底代表什么

    我正在做一些图形 在Javascript中 如果相关的话 我知道你可以使用pt px 等查找什么时px这意味着 每个网站似乎都有相同的模糊答案 字体大小 以像素为单位 我想知道什么exactly px代表 例如 如果我有20px 20 像素
  • 尝试与 Web 服务通信时遇到“没有到主机的路由”错误

    我正在尝试与我的笔记本电脑上的网络服务进行通信 并使用 Android 手机作为客户端 我试图做一个简单的登录功能 但是 每当客户端尝试与 Web 服务通信时 Eclipse 上的 DDMS 中就会弹出此错误 我可以通过家庭网络访问网络服务
  • Android 离线语音识别只显示一个结果?

    我已经设置了语音识别服务 如本文所示Android 语音识别作为 Android 4 1 和 4 2 上的服务 https stackoverflow com questions 14940657 android speech recogn
  • 如何使 Jinja2 中的 tojson() 过滤器输出 Unicode 而不是转义序列?

    我的模板是用于JS的 let SETTINGS settings tojson 4 我的设置是一个字典 name Russian name id 12345 如果我渲染它 我会得到 let SETTINGS name Russian nam