我有一个JSON文件,我想阅读并使用javascript做一些事情。这都在Django 1.8中。最终目标是使用D3进行一些奇特的可视化,而Django和Python则为后端的其余部分提供动力。
我无法将.json文件中的数据转换为javascript函数。 json文件是' uk.json'。
这是我的views.py:
# Create your views here.
def index(request):
data = get_data()
# return jsonify(data)
return render(request, 'pages/index.html')#, {'data': json.dumps(data)})
# api view function to get the data
def getuk(request):
json_data = open('/static/js/uk.json')
data1 = json.load(json_data) # deserializes it
data2 = json.dumps(json_data) # json formatted string
json_data.close()
return JsonResponse(data2)
这是我对应的urls.py:
url(r'^$', views.index, name='index'),
url(r'^api/getuk', views.getuk, name='getuk'),
index.html我试图获得所有这些花哨的显示:
{% load staticfiles %}
<!DOCTYPE html>
<meta charset="utf-8">
<style>
/* CSS goes here. */
</style>
<body>
<script src="//d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script src="//d3js.org/topojson.v1.min.js"></script>
<script src="{% static 'js/graph.js' %}"></script>
</body>
最后我的graph.js我想在传递的json数据上使用D3。
d3.json("api/getuk", function(error, uk){
if(error) return console.error(error);
console.log(uk);
})
尝试将数据导入graph.js,以便我可以使用它。我知道如何在没有框架的情况下正常地做到这一点,但我试图让这一切都在一起工作。
答案 0 :(得分:1)
原因是我需要在带有自动关闭的django模板标签的html中创建临时var
。
var temp = {{ data | safe }};
然后变量temp
可以在我的.js文件中播放
答案 1 :(得分:0)
JsonResponse()
除了一个字典,不是一个json字符串。
尝试:
def getuk(request):
with open('/static/js/uk.json') as json_file:
json_data = json_file.read()
obj = json.loads(json_data)
return JsonResponse(obj)