2

我已经能够传递原始类型,例如像这样的整数但我想传递更复杂的对象,例如我创建的一些 Django 模型。这样做的正确方法是什么?

4

2 回答 2

3

我知道我参加聚会有点晚了,但我在自己的工作中偶然发现了这个问题。

这是对我有用的代码。

这是在我的views.py 文件中。

from django.shortcuts import render
from django.http import HttpResponse
from .models import Model

#This is the django module which allows the Django object to become JSON
from django.core import serializers

# Create your views here.
def posts_home(request):
    json_data = serializers.serialize("json",Model.objects.all())    
    context = {
    "json" : json_data,
    }
    return render(request, "HTMLPage.html",context)

然后当我访问我的 html 文件中的数据时,它看起来像这样:

<script type = 'text/javascript'>
    var data = {{json|safe}}
    data[0]["fields"].ATTRIBUTE
</script>

data 是 JSON 对象的列表,所以我正在访问第一个对象,这就是它是 data[0] 的原因。每个 JSON 对象都有三个属性:“pk”、“model”和“fields”。“字段”属性是数据库中的字段。此信息可在此处找到:https ://docs.djangoproject.com/es/1.9/topics/serialization/#serialization-formats-json

于 2016-03-03T19:54:35.613 回答
0

特别是对于 Django 模型实例,您可以将它们序列化为 JSON 并在模板上下文中使用序列化值。

从那里,您可以简单地执行以下操作:

var myObject = eval('(' + '{{ serialized_model_instance }}' + ')');

或者

var myObject = JSON.parse('{{ serialized_model_instance }}');

如果使用JSON-js(更安全)。

对于一般的 Python 对象,请参阅如何使类 JSON 可序列化

于 2013-05-24T18:09:10.170 回答