在 Django 框架中的 js 文件中获取 JSON 数据

Getting JSON data in a js file In Django Framework

本文关键字:获取 JSON 数据 文件 Django 框架 js      更新时间:2023-09-26

我有一个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'),

索引.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>

最后是我的图表.js我想在传递的 json 数据上使用 D3。

d3.json("api/getuk", function(error, uk){
    if(error) return console.error(error);
    console.log(uk);
})

尝试将数据放入图形中.js以便我可以使用它。我知道如何在没有框架的情况下正常做到这一点,但我正在尝试让这一切一起工作。

原因是我需要在 html 中创建一个带有 django 模板标签的临时var,并关闭自动转义。

var temp = {{ data | safe }};

然后变量temp可以在我的.js文件中播放

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)