我正在将一个 Flask 应用程序从 python 2 转换为 3,
Jinja2 现在用尾随 b 和单引号呈现字节,例如,b'a123'虽然我需要它们呈现为a123.
所有 urlsafe 字符串都会发生这种情况,这些字符串在 python 2 中以字符串形式出现——而不是 unicode——并根据需要进行渲染。现在它们是字节
我想避免每次检查类型并添加 .decode('utf-8)
我遇到同样的问题。也许你的问题已经解决了,因为这个问题已经过去这么久了。
在我的问题中,我使用“rb”模式打开文件,read()文件处理程序的方法将返回<type 'bytes'>,因此 jinja2Template.render()还将返回字符串的字符串包装器。(只是你称之为带有前缀“b”和引号的字节)
with open("file.txt", "rb") as f:
text = f.read()
# type(text) -> <class 'bytes'>
template = Template(f.read())
template.render(kwargs)
Run Code Online (Sandbox Code Playgroud)
当我用“r”修改打开模式后,这次一切都按预期工作。
with open("file.txt", "r") as f:
text = f.read()
# type(text) -> <class 'str'>
template = Template(text)
template.render(kwargs)
Run Code Online (Sandbox Code Playgroud)
所以问题是Template构造函数中真实参数的类型。
| 归档时间: |
|
| 查看次数: |
757 次 |
| 最近记录: |