通过Django模板变量将Python对象传递给JavaScript

时间:2013-05-24 17:28:23

标签: javascript django templates object

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

2 个答案:

答案 0 :(得分:1)

我知道我在聚会上有点迟到但我在自己的工作中偶然发现了这个问题。

这是适用于我的代码。

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

float

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

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)

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

答案 1 :(得分:0)

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

从那里,你可以做到:

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

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

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

对于Python对象,请参阅How to make a class JSON serializable