使用来自 django 视图的数据刷新/重绘 jquery 数据表

Posted

技术标签:

【中文标题】使用来自 django 视图的数据刷新/重绘 jquery 数据表【英文标题】:Refresh/redraw jquery datatables with data from django view 【发布时间】:2017-01-20 20:08:56 【问题描述】:

我使用 jquery DataTables 1.10.0 在表格上显示一些数据。这就是我加载数据的方式:

var layer_data = $("#layer_data").DataTable(
  "scrollX": true,
  "aaData":whole_array,
  "iDisplayLength": 10
);

其中 whole_array 是一个数组数组,如:

[Array[7], Array[7], Array[7]

每个数组都有不同的值:

 0:"<button id="1" class="btn btn-info btn-sm _edit_save_btn" style="margin-bottom:5px;width:68px; background-color:#a7a3a3;border-color:#a7a3a3">Edit</button></br><button id="fid__1" class="btn btn-info btn-sm _add_save_btn" data-toggle="modal" data-target="#add_geometry" data-fid="afghanistan_test.1" style="background-color:#a7a3a3; border-color:#a7a3a3;margin-bottom:5px;width:68px;">Geometry</button></br><button id="fid__cancel__1"  class="btn btn-info btn-sm _cancel_btn" style="margin-bottom:5px;width:68px; background-color:#a7a3a3;border-color:#a7a3a3">Cancel</button>"
 1:"Afghanistan"
 2:"Badakhshan"
 3:...

我想要做的是在单击按钮时重绘/刷新表格。我读到有一些方法可以用ajax requests 做到这一点,但我认为这不是我的情况,因为数据来自在页面加载时初始化的 django 视图。

【问题讨论】:

为什么不发出 ajax 请求来(重新)填充表格? #Sayse 部分数据来自 django 视图,其他一些(如 html 按钮)是使用 jquery 构建的。我将如何使用 ajax 重新填充表格? 【参考方案1】:

您想使用 JSONReponseMixin 之类的东西并让您的视图只发送数据。

class MyView(JSONResponseMixin, AjaxResponseMixin , TemplateView):         
    def get_ajax(self, request, *args, **kwargs):
        data = ['Country', 'Country']
        return self.render_response(json.dumps(data))

当您从 jquery ajax 调用查看时,它只会发回数据并生成 html。

您也可以不执行 json 并让视图返回仅包含表格的 html 并替换页面中的 html。

【讨论】:

以上是关于使用来自 django 视图的数据刷新/重绘 jquery 数据表的主要内容,如果未能解决你的问题,请参考以下文章

使用ajax刷新表格内容后重绘数据表?

NSTableView 在特定条件下不重绘

使用 AJAX 获取 Django 视图数据

当来自锁屏 iPhone 时在 didreceivelocalnotification 上重绘 GUI

宽度约束更新后视图未重绘

在另一个模板中显示来自 Django 视图的 HTML 表