如何在javascript/clientlogic中使用Django变量?

2024-09-30 06:13:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试序列化queryset,以便在javascript中使用它来填充图表。 问题是它不允许我序列化对象。如果我删除queryset,它可以工作,但我需要上下文中的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


Tags: 对象djangojson序列化ishtmlcontext图表
1条回答
网友
1楼 · 发布于 2024-09-30 06:13:01

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

views.py

from django.http import JsonResponse

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

url.py

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

相关问题 更多 >

    热门问题