Ale*_*hen 3 javascript unicode jinja2 python-3.x
我的模板是用于JS的
\n\nlet SETTINGS = {{settings|tojson(4)}};\nRun Code Online (Sandbox Code Playgroud)\n\n我的设置是一个 dict {\'name\': \'Russian name \xd0\xa1\xd0\xb0\xd1\x88\xd0\xb0\', \'id\': 12345}。如果我渲染它,我会得到:
let SETTINGS = {\n "name": "Russian name \\u0421\\u0430\\u0448\\u0430",\n "id": 12345\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我需要获取非转义的 unicode 字符。我可以用同样的方式在 python 中使用
\n\njson.dumps(data, encure_ascii=False)\nRun Code Online (Sandbox Code Playgroud)\n\n但tojson()过滤器只接受一个参数(缩进)。
有一种方法可以为tojson()过滤器提供剩余参数。
从 Jinja 2.9 开始,可以在环境中配置策略,这会影响过滤器和其他模板构造的行为方式。可以通过更改策略属性的一些键来完成。
对于你的情况,有json.dumps_kwargs政策。这是你必须做的:
env = jinja2.Environment()
env.policies['json.dumps_kwargs']['ensure_ascii'] = False
Run Code Online (Sandbox Code Playgroud)
此修改后的环境不会转义 unicode 符号。
| 归档时间: |
|
| 查看次数: |
2236 次 |
| 最近记录: |