【发布时间】:2020-01-03 20:55:39
【问题描述】:
我正在使用 Python 3.7 和 Django。我有一个返回以下内容的视图
# Ajax request that returns articles with similar words in the titles
def get_hints(request):
...
s = ArticlesService()
objects = s.get_hints(article)
data = serializers.serialize('json', objects)
return HttpResponse(data, content_type="application/json")
“get_hints”方法返回一个模型对象数组。问题是,在 Javascript 端,JSON 是这样返回的......
[{model: "mydb.article", pk: 60945, fields: { title: "Cooking Eggplant", path: "https://thecookingblog.com/abcde", label: "" },
...]
有没有办法在没有“模型”和“字段”的情况下返回 JSON,而只是将对象的属性作为更传统的 JSON 返回,例如
{ title: "Cooking Eggplant", path: "https://thecookingblog.com/abcde", label: "" }
?
【问题讨论】:
-
是的,使用另一个序列化器,Django 提供的序列化器用于导出和加载数据库中的数据。 django-rest-framework 有你想要的序列化器。
-
@dirkgroten,在您列出的答案中,他们正在从头开始构建 JSON,一次一个属性。如果这是唯一的方法,那就这样吧,但我希望有一些东西我可以将一个对象传递给它,以便为我做所有的艰苦工作。
-
然后参考我的第一条评论。使用 DRF 中的 ModelSerializer。
-
那个东西叫做序列化器。要么找到一个 Django 包,它具有易于配置和灵活的序列化器(DRF 有),要么编写你自己的序列化器类。下面 Abdul 的答案是构建一个简单的序列化器的良好开端,它将序列化您模型的所有字段。
标签: python json django python-3.x view