我是编程和SO的新手。我有一个关于使用Django / Python开发的问题。 我正在尝试将django变量用于javascript脚本。
我的模型是这样的:
class Business(models.Model):
business_name = models.CharField(max_length=200)
lat = models.FloatField(default=0)
lng = models.FloatField(default=0)
我正在创建一个将商家数据发送到模板的Django应用程序
def index(request):
business_list = Business.objects.all()
context = {'business_list': business_list}
return render(request, 'kitemap/index.html', context)
我想将django对象列表转换为javascript中可用的对象列表但我无法设法这样做...我尝试了下面的代码但是没有用。能否请你帮忙?感谢
for (var i = 0; i < {{ business_list|length }}; i++) {
var school = [];
business[0] = {{ business_list.i.lat }};
business[1] = {{ business_list.i.lng }};
business[2] = {{ business_list.i.business_name }}M
businesses[i] = business;
}
答案 0 :(得分:0)
您可以将查询集序列化为json格式,
from django.core import serializers
from django.http import JsonResponse
import json
business = Business.objects.all()
data = json.loads(serializers.serialize("json", business))
#return JsonResponse(json)
context = dict(data=data)
return render(request, 'kitemap/index.html', context)
然后你可以进行迭代,因为,查询集被转换为dicts列表。
你可能需要做这样的事情,
var school = [];
for (var i=0;i<data.length;i++) {
var business = {};
business['business_name'] = json[i].fields.business_name;
business['lat'] = data[i].fields.lat;
business['lng'] = data[i].fields.lng;
school.push(business);
}
答案 1 :(得分:0)
还可以在javascript中使用safe
模板标记。您应该将它应用于来自HttpResponse的上下文变量。