我如何从 jQuery Datatables 调用 django 视图?

Posted

技术标签:

【中文标题】我如何从 jQuery Datatables 调用 django 视图?【英文标题】:How can i call django view from jQuery Datatables? 【发布时间】:2021-04-30 04:15:21 【问题描述】:

我正在使用数据表,我正在尝试向它们添加一些带有操作的按钮。我想调用 django 视图函数,但我不确定如何在 jQuery Datatables 中实现这一点。当我有 django 模板时,很明显我可以说

<a href="% url 'feedback:useredit' user.id %" class="btn text-secondary px"-0>
                                            <i class="far fa-edit fa-lg"></i>

这会将我重定向到 django 中的“useredit”视图功能。但是,如果没有 django 模板和 jQuery 的 Datatables 内部,这将无法工作。你们能给我一些提示如何实现这一点吗?

             $(document).ready(function() 
                 var data;
                 fetch("http://192.168.2.85:8000/fetchapi/")
                    .then(response => response.json())
                    .then(json => data = json)
                    .then(() => console.log(data);
                        $('#datatable').DataTable( 
                        data:           data.employees,
                        deferRender:    true,
                        scrollY:        false,
                        scrollX:        false,
                        scrollCollapse: true,
                        scroller:       true,
                        "columns": [
                             data: "id" , 
                             data: "first_name" , 
                             data: "last_name" ,
                             data: "email" , 
             
                                 "data" : null, render: function ( data, type, row ) 
                                    return '<button class="btn-view" type="button">Edit</button>';
                                 ,
                                 "data" : null,render: function ( data, type, row ) 
                                    return '<i class="fa fa-plus-circle" aria-hidden="true"></i>';
                                 ,

                        ],
                        "order": [[1, 'asc']]

                     )
                    
                )
                 ); 

这是整个 jQuery 代码,但我认为我需要在这部分实现 django 视图的 url:

                             "data" : null, render: function ( data, type, row ) 
                                return '<button class="btn-view" type="button">Edit</button>';
                             ,
                             "data" : null,render: function ( data, type, row ) 
                                return '<i class="fa fa-plus-circle" aria-hidden="true"></i>';
                             ,

我希望我的问题是可以理解和明确的,非常感谢您抽出宝贵的时间!

【问题讨论】:

分享你的views.py。 我在views.py中没有逻辑,我只是​​创建了一些名为employee_edit的函数并在urls.py中定义它,但到目前为止我只创建带有编辑选项的django模板,将用户重定向到另一个 django 模板,用于使用此模板中的表单进行编辑。我不知道如何在没有表单和模板的情况下实现这一点,只能在数据表中。 你的观点在哪里?您必须先创建一个视图返回 json 响应,将其放入 url,并在您的 js 文件中声明它... 【参考方案1】:

在我看来,这是一个快速的解决方案。 您可以将您的 url 定义为变量:

var url = "% url 'feedback:useredit' -999 %";

您可以将 -999 替换为您的 id

var desired_url = url.replace("-999", "1");
// or
var href_title = "<a href='" + "% url 'feedback:useredit' -999 %".replace("-999", data.id) +"'>" + data.text + "</a>";

当然最好在后端方法(视图)中生成它。

from django.http import JsonResponse

def datatable_json(request):
    ... Your code here ...
    data["useredit_url"] = reverse("feedback:useredit", args=[user.id])
    return JsonResponse(data) 

【讨论】:

以上是关于我如何从 jQuery Datatables 调用 django 视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 jQuery dataTables 中获取分页信息

如何使用 jQuery DataTables 从所有页面提交复选框

jquery脚本执行顺序DataTables

黄聪:Jquery+DataTables插件,如何在ajax调用服务器数据后,自动给tr添加id属性

如何从可以由 jQuery Datatables 插件解析的 CSV 格式化 json

如何在 jQuery DataTables 中的分页期间滚动到第一行