Datatables插件选中导入与删除查看权限
导入:
js示例:
var importData = []; // 选中导入指标 $('#sample_2 tbody').on('click', 'input[name="selecttarget"]', function () { if ($(this).prop('checked')) { importData.push($(this).val()); } else { for (var i = 0; i < importData.length; i++) { if (importData[i] == $(this).val()) { importData.splice(i, 1); } } } }); $('#addapp_save').click(function () { var table1 = $('#sample_1').DataTable(); var table2 = $('#sample_2').DataTable(); if (importData.length < 1) { alert("请至少选择一个指标"); } else { $.ajax({ type: "POST", dataType: 'json', url: "../../target_importapp/", data: { adminapp: $("#adminapp").val(), selectedtarget: JSON.stringify(importData), }, success: function (data) { var myres = data["res"]; if (myres == "导入完成。") { table1.ajax.reload(); table2.ajax.reload(); } alert(myres); }, error: function (e) { alert("页面出现错误,请于管理员联系。"); } }); } });
后端:
def target_importapp(request): if request.user.is_authenticated(): adminapp = request.POST.get("adminapp", "") selectedtarget = request.POST.get('selectedtarget', '[]') result = {} try: app_id = int(adminapp) except: result["res"] = '数据异常,请重新打开页面。' my_app = App.objects.exclude(state="9").filter(id=app_id) if len(my_app) > 0: curapp = my_app[0] for target in eval(selectedtarget): try: my_target = Target.objects.exclude(state="9").get(id=int(target)) my_target.app.add(curapp) # 新增一条多对多关系 except Exception as e: print(e) result["res"] = '导入完成。' else: result["res"] = '当前应用不存在。' return JsonResponse(result)
页面:
删除:
并不是真正删除,删除的是查看权限,移除多对多关系
js示例:
$('#sample_1 tbody').on('click', 'button#delrow', function () { if (confirm("确定要删除该指标的查看权限吗?")) { var table = $('#sample_1').DataTable(); var data = table.row($(this).parents('tr')).data(); var table2 = $('#sample_2').DataTable(); $.ajax({ type: "POST", url: "../../target_app_del/", data: { id: data.id, adminapp: $("#adminapp").val(), }, success: function (data) { if (data == 1) { table.ajax.reload(); table2.ajax.reload(); alert("删除成功!"); } else alert("删除失败,请于管理员联系。"); }, error: function (e) { alert("删除失败,请于管理员联系。"); } }); } });
后端:
def target_app_del(request): if request.user.is_authenticated(): if 'id' in request.POST: adminapp = request.POST.get("adminapp", "") id = request.POST.get('id', '') try: id = int(id) app_id = int(adminapp) except: raise Http404() my_app = App.objects.exclude(state="9").get(id=app_id) target = Target.objects.get(id=id) target.app.remove(my_app) #移除多对多关系 target.save() return HttpResponse(1) else: return HttpResponse(0)
分类:
part7 前端
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2019-06-04 Bootstrap框架