【发布时间】:2018-11-08 21:29:17
【问题描述】:
我正在使用 Django 并尝试直接使用 javascript 获取数据。这里有一些代码。在idx_map.html中,JS部分是这样的:
var act = '{{ activities_json }}';
document.getElementById("json").innerHTML = act[0];
var obj = JSON.parse(act);
document.getElementById("demo").innerHTML = 1;
我正在尝试查找错误,因此我将一些代码用于将行输出到页面。问题是JSON.parse() 行。如果我评论该行,我可以在我的 HTML 页面中看到 [ 和 1,这意味着还没有错误。但是如果我取消注释 JSON.parse() 行,我就看不到 1,这表明 JSON.parse() 代码有一些错误。但是我没有发现任何问题。有人可以帮我吗?
在views.py中,我将对象序列化为一个json文件。代码是:
def map(request):
activities_json = serializers.serialize("json", Activities.objects.all())
context = {
"activities": Activities.objects.all(),
"activities_json": activities_json,
}
return render(request, "CS_Activities/idx_map.html", context)
所以这个行为应该是这样的(作为一个字符串?):
[
{"model": "CS_Activities.activities", "pk": 1, "fields": {"act_name": "gun shot", "location": "York Universitty", "loc_lat": 43.76776, "loc_long": -79.50297, "time": "2018-11-05T20:25:08Z", "description": "a people dead"}}, {"model": "CS_Activities.activities", "pk": 2, "fields": {"act_name": "another gun shot", "location": "York Village", "loc_lat": 43.76, "loc_long": -79.5, "time": "2018-11-05T22:35:06Z", "description": "A person shot dead while walking"}}
]
更新: 在 idx_map.html 中,如果我只是将 var 替换为长字符串,就不会出现错误。所以我认为我的问题是如何从 Django 数据库中以 json 文件格式检索数据。
【问题讨论】:
-
'{{ activities_json }}'不是有效的 json,但您后面的示例似乎是。 -
您应该能够直接打印服务器端 json 而无需在其周围加上引号,并且不需要使用 JSON.parse()。然后javascript编译器会看到类似
var act = [{"model".... ]的东西,它已经是javascript数组 -
尝试使用
'{{ activities_json|safe }}'。 toString() 不是必须的,它已经是一个字符串了。 -
为什么用
python和django标记? -
马蒂亚斯,我正在使用 Django。在views.py 中,我将对象序列化为JSON,以便在HTML 页面的javascript 中使用它。这就是我使用 act = '{{ activities_json }}' 来查询数据的原因。
标签: javascript python json django