我在使用Django REST框架序列化JSON格式时遇到了一个问题。我在Django项目中使用SQLite3。当我用一个包含非ASCII字符的字符串序列化一个对象时,我会遇到一些问题。在
例如,如果我直接查询我的模型,我会得到字符串:
"Grados Centígrados"
序列化之后序列化.data是:
^{pr2}$所以序列化程序在做什么
"Grados Centígrados".decode('UTF-8')
然后,JSONRenderer再次对“decoded”字符串进行“编码”,结果如下:
'Grados Cent\xc3\xadgrados'
我无法在浏览器中获得正确的表示。在
编辑:我使用的是Django REST framework3。我在设置文件中添加了以下内容:
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
),
'DEFAULT_PARSER_CLASSES': (
'rest_framework.parsers.JSONParser',
)
}
然后我创造了网址.py以及视图.py,遵循教程中的步骤:
http://www.django-rest-framework.org/tutorial/2-requests-and-responses/
我得到:“Grados CentÃ…Grados”
编写您自己的UTF-8渲染:
在你的设置.py公司名称:
^{pr2}$UnicodeJSONRenderer
类不再存在(in version 3 of Django rest framework)默认情况下会包含它。如果要禁用它,请将以下内容粘贴到设置.py文件
REST_FRAMEWORK = { 'UNICODE_JSON': False }
使用Django REST framework3.1.1时,我不会遇到这个问题。它显示“Grados CentíGrados”,在可浏览的API中没有问题。您是否在设置中修改了REST\u框架设置?如果是的话,你能把它贴出来吗?在
{2{假设你使用的是^ 2框架,除非你使用的是^ 2框架。在3.0+中,
UnicodeJSONRenderer
现在被称为JSONRenderer
,因此总是默认以unescapedutf-8编码方式显示字符串。在从2.0文档中:
JSONRenderer
UnicodeJSONRenderer
因此,您需要在您的设置中设置:
相关问题 更多 >
编程相关推荐