javascript - 如何在我的 javascript/client-logic 中使用 Django 变量?
问题描述
我正在尝试序列化一个查询集以在 javascript 中使用它来填充图表。问题是它不允许我序列化对象。如果我删除queryset
它可以工作,但我需要上下文中的查询集才能将其用于 Django 渲染。
那么如何使用 Django 中的变量来呈现 html div 和 javascript 来呈现图表呢?(在这种情况下,这是一个画布,为什么我需要 javascript 站点上的变量)。
views.py其中currency
和dynascore
是两个自定义变量,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?
解决方案
添加另一个视图并通过 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'),
]
推荐阅读
- r - 将存储在列表中的数据类型转换为日期 R
- reactjs - 数据响应无法在反应 js 应用程序中映射
- mongodb - 如何在 mongodb 中使用 $in 查询?
- ruby - Ruby 区分两个哈希并在循环中合并累积和
- php - 将终端 curl 发布请求发送到登录
- pytorch - 如何使用 pytorch 使这种乘法变得更简单?
- javascript - 使用 react-button 给出未知道具的警告
- ruby-on-rails - Rails InvalidAuthenticityToken 仅在一种情况下
- ajax - Django - 登录 - 禁止(CSRF 令牌丢失或不正确。):
- reactjs - 无法实现(react-native-document-picker)