我已经能够传递原始类型,例如像这样的整数,但我想传递更复杂的对象,例如我创建的一些 Django 模型。这样做的正确方法是什么?
问问题
7714 次
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 回答