Django 如何正确访问 javascript 中的上下文数组?

Posted

技术标签:

【中文标题】Django 如何正确访问 javascript 中的上下文数组?【英文标题】:Django how to correctly acces the context array in javascript? 【发布时间】:2020-11-17 23:26:20 【问题描述】:

我的问题与之前的问题类似,但是我似乎无法使我的代码工作:

How can I pass my context variables to a javascript file in Django?

How to use the context variables passed from Django in javascript?

我有一个列表列表,包含以下形式的数据:

data = [[1, 2, 3, 4, ...] [210, 346, 331, 402, ...] [...] ...] 

其中第一个列表表示每个采样的数量。我正在使用如下所示的类将这些数据传递给我的 html 文件:

class IndexView_charts(generic.TemplateView):
    """
    IndexView:
    """
    module = 'IndexView'
    template_name = charts_temp_name #variable for the template

data = ##extra code here to fetch data

def get_queryset(self):
    log(self.module, 'get_queryset', file=__file__)
    return self.data

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context['data'] = self.data
    return context

在模板中,我可以访问变量数据,例如,它显示在网页上:

<h1> data.0 </h1>

现在,我想在我的脚本中访问它。在同一个文件中,我有以下代码:

var chartData =  data ;
... some more code here ...
data:chartData[1] 

但我没有得到我想要的图表。如果我将 chartData[x] 的出现更改为包含一些虚拟数据的列表,则脚本可以工作。所以问题在于访问数据。

【问题讨论】:

您尝试过使用escapejs 内置标签,例如' python_object|escapejs ';? 问题解决了吗? 【参考方案1】:

似乎没有将上下文数组正确解析为 js 作为数组。如果我的评论建议不起作用,那么您可以尝试使用tojson template-tag 将 python 列表转换为 js 数组。

例如,

var mylist = mylist|tojson;
for(i = 0; i < mylist.length; i++)
    console.log(mylist[i])
;

【讨论】:

以上是关于Django 如何正确访问 javascript 中的上下文数组?的主要内容,如果未能解决你的问题,请参考以下文章

Django:如何在javascript中访问当前登录用户的ID?

如何使用Django模板在javascript中访问ajax jquery中的模板变量

如何通过 HTML 中的 JavaScript 在 Django 中保存模型实例

如何将 django 变量正确转换为模板中的 json

如何正确使用 django 静态文件

Django 模板变量和 Javascript