Json Django-使用模型和数据序列化复杂的上下文结构

Json Django-使用模型和数据序列化复杂的上下文结构,json,django,django-rest-framework,Json,Django,Django Rest Framework,在django视图中,我希望能够序列化通常用于发送到模板的整个上下文(通常通过调用render并传递locals)。 我想用SPA+API进行实验,并尝试进一步开发的可能性,我想创建一个函数,将locals序列化为json,并将其作为json响应返回 现在的问题是,局部变量通常是模型列表、dist和queryset的混合体。 我可以使用django.core.serializers或使用django rest框架序列化模型。我可以使用jsonlibrary用基元类型序列化dict,但我不知道如何

在django视图中,我希望能够序列化通常用于发送到模板的整个上下文(通常通过调用
render
并传递
locals
)。 我想用SPA+API进行实验,并尝试进一步开发的可能性,我想创建一个函数,将
locals
序列化为json,并将其作为json响应返回

现在的问题是,局部变量通常是模型列表、dist和queryset的混合体。 我可以使用
django.core.serializers
或使用django rest框架序列化模型。我可以使用
json
library用基元类型序列化dict,但我不知道如何简单地混合使用它们

理想的方法是通过
locals
dictionary,用它们的序列化表示替换所有找到的模型,然后将它们放在一起,甚至可能在指定用于哪个模型的序列化程序(在drf的意义上)之前指定。但我真的不想重新发明轮子,以防它已经存在


另一个问题是——这是一个好主意吗?返回json上下文作为服务器端呈现的替代方案?我正处于原型设计阶段,因此我仍在考虑如何向前推进,我们非常感谢您在该领域的任何意见。

我建议您使用DRF

  • ModelSerializer
    将返回一个Json编码的模型数组
  • Serializer
    with
    DictField
    将返回一个Json编码的
    dict
  • Serializer
    with
    ListField
    将返回一个Json编码的
    list
您可以创建
序列化程序
,其中字段是另一个
序列化程序
,用于嵌套

对于你的问题,这是个好主意吗,我会说:

  • 如果您将数据推送到外部源(而不是django),就可以了
  • 如果您将数据推送到django模板,这是一个坏主意,您会失去很多django功能:(

我知道这一点,但这将要求我为每个视图创建序列化程序,即使我不认为这是必要的。在我看来,我所需要做的就是为模型及其其余部分(基本数据类型+列表/集/目录)提供序列化程序。将起作用(但您需要提供好的ModelSerializer)但是每个视图都像掷硬币一样。如果你想用API来构造它,你需要更加严格,否则你会浪费很多时间去调试