【发布时间】:2015-05-17 14:57:15
【问题描述】:
我在使用 Django REST 框架对 JSON 格式进行序列化时遇到问题。我在我的 Django 项目中使用 SQLite3。当我使用包含非 ASCII 字符的字符串序列化对象时,我遇到了问题。
例如,如果我直接查询我的模型,我会得到字符串:
"Grados Centígrados"
序列化后,serialized.data为:
u'Grados Cent\xedgrados'
所以序列化器在做
"Grados Centígrados".decode('UTF-8')
然后 JSONRenderer 再次对“解码”字符串进行“编码”,结果如下:
'Grados Cent\xc3\xadgrados'
我无法在浏览器中获得正确的表示。
编辑:我正在使用 Django REST framework 3。我将以下内容添加到我的设置文件中:
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
),
'DEFAULT_PARSER_CLASSES': (
'rest_framework.parsers.JSONParser',
)
}
然后我按照教程中的步骤创建了 urls.py 和 views.py:
http://www.django-rest-framework.org/tutorial/2-requests-and-responses/
我得到:“Grados CentÃgrados”
【问题讨论】:
-
使用 Django REST Framework 3.1.1 我没有遇到这个问题。它在可浏览的 API 中显示“Grados Centígrados”,没有问题。您是否在设置中修改了
REST_FRAMEWORK设置?如果可以,您可以发布吗?
标签: python json django serialization django-rest-framework