我如何从 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插件,如何在ajax调用服务器数据后,自动给tr添加id属性