首页 > 解决方案 > 如何在我的 javascript/client-logic 中使用 Django 变量?

问题描述

我正在尝试序列化一个查询集以在 javascript 中使用它来填充图表。问题是它不允许我序列化对象。如果我删除queryset它可以工作,但我需要上下文中的查询集才能将其用于 Django 渲染。

那么如何使用 Django 中的变量来呈现 html div 和 javascript 来呈现图表呢?(在这种情况下,这是一个画布,为什么我需要 javascript 站点上的变量)。

views.py其中currencydynascore是两个自定义变量,queryset是 Django 模型查询

[...]

context = {
        'queryset': queryset,
        'currency': currency,
        'dynascore': dynascore,
    }

    # Prepare context for javascript
    json_context = json.dumps(context)
    context['json_context'] = json_context

    print(queryset)
    return render(request, template, context)


// Throws: 
// Object of type StocksPrice is not JSON serializable

Javascript

console.log(json_context)

// Throws: 
// Uncaught ReferenceError: json_context is not defined at terminal.js:1

因此,据我了解,Django 检索数据和 javascript/客户端之间唯一的“桥梁”是 JSON?

标签: javascriptpythondjango

解决方案


添加另一个视图并通过 url /chartdata 使用 ajax 将数据获取到您的 javascript。

视图.py

from django.http import JsonResponse

def chartdata(request):
    ...
    context = {
        'queryset': queryset,
        'currency': currency,
        'dynascore': dynascore,
    }
    return JsonResponse(context)

网址.py

urlpatterns = [
    path('chartdata', views.chartdata,  name='chartdata'),
]

推荐阅读