【问题标题】:Retrieve data from value in database using Javascript Django使用Javascript Django从数据库中的值中检索数据
【发布时间】:2017-12-04 03:52:16
【问题描述】:

我是 Django 的新手。我正在使用数据表 (https://datatables.net/) 来填充我的数据。任何人都可以就我应该在我的代码中更改的内容提供一些建议吗?我在数据库中有数据,但我不知道为什么数据没有显示在表中。

views.py

from django.core import serializers

def ltimesheet(request): 
    json_serializer = serializers.get_serializer("json")()
    query_results = json_serializer.serialize( Timesheet.objects.all(), ensure_ascii=False )
    data={'query_results':query_results}
    return render(request, 'hrfinance/list_timesheet.html', data)

这就是我的脚本的样子

var dataSet = '{{ query_results|escapejs }}';

/*create the table*/
$(document).ready(function() {
    var table = $('#example').DataTable( {
        data: dataSet,
        columns: [
            { title: "Student ID" },
            { title: "Student Name" },
            { title: "Start Date" },
            { title: "End Date" }
        ]
    } );

【问题讨论】:

  • 你确定dataSet不为空吗?
  • 为什么结果用引号括起来?你的脚本在哪里?
  • @NabIlovich 如何检查我的数据集是否为空?因为我试图在我的模板中打印 {{query_results}} 并且它显示其中有数据
  • 首先,确保将数据传递给 html。第二个:你必须使用相同的名称(views.py中的名称是数据所以它应该是html - js中的数据)
  • @Nobody 据我所知。从服务器传递到 HTML 的数据是普通数据(不是 Json)。因此,您可以立即使用它并在 html 中显示。但是在数据表的情况下。数据应该是 Json,所以只要确保你给它正确的数据类型

标签: javascript python django database


【解决方案1】:

django.core.serializers 会将您的模型序列化为以下结构:

[
    {
        "pk": "4b678b301dfd8a4e0dad910de3ae245b",
       "model": "yourapp.Timesheet",
        "fields": {
            "student_name": "Joe",
            ...
        }
    }
]

你可以这样做:

  • 在模板中,迭代序列化程序返回的json
  • 在视图中,手动序列化您的模型
  • 使用djangorestframework 序列化程序,虽然可能太多了

【讨论】:

  • 在我看来你的意思是这样的:json_serializer = serializers.get_serializer("json")() query_results = json_serializer.serialize(Timesheet.objects.all(), ensure_ascii=False)
  • 是的,它是一样的。所以我不应该这样做吗?
  • 好吧,如果您使用相同的代码,您将得到相同的结果。您需要根据 datatables 的期望格式化 json
猜你喜欢
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-08
  • 1970-01-01
  • 2016-01-29
相关资源
最近更新 更多