【问题标题】:how to pass python json object to django template如何将python json对象传递给django模板
【发布时间】:2015-10-03 18:23:31
【问题描述】:

我想将一些数据(dict 格式)从视图传递到模板。然后在模板中我想把它转换成json格式,这样就可以在javascript中使用了。但我尝试使用 json 过滤器,结果证明它不是 django 中的有效过滤器。我也尝试像这样在上下文字典中使用传递 json 数据,但我在模板中收到错误,它说数据不是 JSON 可序列化的。我知道有一种方法可以进行另一个 ajax 调用来获取 json 数据。但我想在初始调用中获取数据。

    items = models.Model1.objects.all()
    itmes = json.dumps(items)
    return render(request, "index.html", {"items":items})

我尝试使用的模板是

<script type="text/javascript">
    var data = {{ items}};
    $('#table').DataTable( {
        data: data,});
</script>

# model 
class Model1(models.Model):
   token = models.CharField(max_length=100)
   flag = models.BooleanField(default = False)

【问题讨论】:

  • 你需要显示数据。
  • 你为什么不使用模型序列化器?
  • 错误很明显:查询集不能直接 JSON 序列化,因为 json 库对 Django 查询集一无所知。这就是为什么,正如 Ignacio 指出的那样,我们拥有完整记录的模型序列化程序。

标签: python django


【解决方案1】:

您不必将其传递给模板,然后将其转换为 json。可以直接返回字符串响应。

import json
return HttpResponse(json.dumps({"item":items}))

【讨论】:

  • 是的,我尝试按照你说的那样做,但我仍然遇到同样的错误。
猜你喜欢
  • 2011-08-17
  • 1970-01-01
  • 2021-08-30
  • 2013-05-20
  • 2021-01-27
  • 1970-01-01
  • 2012-04-12
  • 2021-09-12
  • 2012-09-27
相关资源
最近更新 更多