Jquery 循环遍历 Django 上下文对象

Posted

技术标签:

【中文标题】Jquery 循环遍历 Django 上下文对象【英文标题】:Jquery looping through Django context object 【发布时间】:2020-11-08 07:52:30 【问题描述】:

我有一个 html 格式的数据列表。从 Django views.py 作为标签(Mydata)。

在 HTML 页面中,我想使用 Jquery 遍历该列表

我尝试了一些方法,但没有奏效这是我的看法

def weltestprd(request, WeelN):
    MyData=TestPRODM.objects.filter(WellID__exact=WeelN)
    context=
    'MyData':MyData,
    
    return render(request,'Home/Prodtest.html',context)

这是我的 HTML 页面,循环工作正常。

% for Values in MyData %
    <p>Values.Id</p>
    <p>Values.Name</p>
    <p>Values.Prod</p>    <!-- decimal number-->
% endfor %

我想在使用 jquery 的 consol 中看到相同的结果 我试过了,但没有按照我的方式工作(列表中的字符串和十进制数字)

% block custom_js %
<script >
var my_dataLoop = (" MyData ")

console.log(my_dataLoop)

$.each(my_dataLoop, function(key, value) 
  console.log(value);
)

</script>
% endblock custom_js %

console.log(my_dataLoop) 向我显示了这个没有数字的列表?

&lt;QuerySet [&lt;TestPRODM: TFT2&gt;, &lt;TestPRODM: TFT2&gt;]&gt;

【问题讨论】:

您需要将其序列化为 json 以传递给 javascript,以便 javascript 解释为有效对象 在您的代码中,MyData 是 python 中的 QuerySet 对象。正如 charlietfl 所说,它需要转换为 javascript 可以使用的结构。检查此 SO 帖子:***.com/q/7165656/7733611 我试图序列化它,它给了我这个错误 , ]> is not JSON serializable 【参考方案1】:

您不能使用 jquery 循环 Django Queryset 对象。您可以做的是使用 django 循环并使用 jquery 打印。代码不准确,但可能看起来像这样:

% block custom_js %
  <script >
    % for Values in MyData %
      console.log("Id: " + Values.Id + ", Name: " + Values.Name + ", Prod: " + Values.Prod);
    % endfor %
  </script>
% endblock custom_js %

【讨论】:

以上是关于Jquery 循环遍历 Django 上下文对象的主要内容,如果未能解决你的问题,请参考以下文章

django如何循环通过通用detailview传回的上下文对象?

jQuery.each()

Django-Jquery 循环遍历所有选项

循环遍历 Django 模板中的嵌套字典

jQuery - 可以完成线程/异步吗?

循环遍历 Django 模板中的对象列表