将utf-8字典放入Django模板中

时间:2014-06-26 08:42:51

标签: python django django-templates

我有一个包含dict结构的FAQ.conf文件,我将其导入到Django中。问答包含utf-8字符和html标记。

{
'1': {'question':'','answer':''},
'2': {},
'3': {},
}

所以我用ast来导入它:

with open(os.path.join(FS_ROOT, FAQ_FILE)) as q: FAQ = ast.literal_eval(q.read())

将其放入我的视图上下文并使用过滤器{{FAQ | safe}} 我收到了:

{'1': {'answer': 'zewn\xc4\x99trznych mog\xc4\x85 si\xc4\x99 do\xc4\x87 osoby. W szczeg\xc3\xb3lno\xc5\x9bci takie, kt\xc3\xb3rych. ...}

如何在模板中获得正确的输出?

1 个答案:

答案 0 :(得分:1)

假设您使用的是Python 2,问题在于您将文件读取为字节字符串而不是Unicode字符串。我相信ast处理utf-8很好,所以你可以这样做:

with open(os.path.join(FS_ROOT, FAQ_FILE)) as q: FAQ = ast.literal_eval(q.read().decode('utf-8'))

或使用codecs.open以正确的编码打开文件。


如果ast不喜欢你的Unicode字符,你可以在字符串上调用decode(),然后再将它们传递给Django。


如果您使用的是Python 3,问题可能是编码不是 utf-8,在这种情况下使用codecs如上所述应该有效,前提是您使用正确的编码。