我正在使用 django v1.5.*,我将渲染一个名为“foobar”的变量,它是一个 json obj,包括 unicode 字符串。
def home( request ): import json foo = {"name": u"赞我们一下"} bar = json.dumps( foo ) return render_to_response( 'myapp/home.html', { "foobar": bar, }, context_instance=RequestContext(request) )
在我的模板中,我用 javascript 对 json obj 进行编码,然后附加到 div,它可以显示预期的字符串:
foobar=JSON.encode('{{foobar|safe}}'); $("#foobar").html(foobar.name);`
然后我可以获得赞一下我们
在我的网页上。
但是我发现如果直接使用变量:
<div id="foobar">{{ foobar }}</div>
它会将 unicode 字符串显示为字节字符串:
{ "name":"\u8d5e\u4e00\u4e0b\u6211\u4eec" }
即使我使用 {{foobar|safe}}
然后什么都没有改变。
现在,我想问一下为什么会这样,或者我有什么问题吗?如果我确实想直接将变量用作{{ foobar }}
,我该怎么办? ?
最佳答案
bar = json.dumps(foo, ensure_ascii=False)
将导致 bar
成为一个 unicode
对象;没有ensure_ascii=False , bar
是一个 str
。
Django 的 smart_text方法也可能对转化有用。
关于python - Django 模板上的 Unicode 字符串显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20833772/