
我们这里对数据库单表的 *** 作包含增删改查四部分
具体链接数据库的方式我们是通过pyMysqL,当然你也可以用其他的。
两种方式的概念与区别1、新url的方式
主要就是我们每一次向后台提交并访问数据时,后台都会给我们
跳转到一个新的界面,来完成我们的 *** 作
2、模态对话框的方式
就是我们可以在页面不刷新的情况下,完成前后台数据之间的交互
两者最大的区别就是新url肯定会刷新页面,而模态框可以让页面不刷新进行交互
新url方式新url主要利用render和redirect对浏览器页面进行重新刷新,还有a标签进行页面跳转
a:相当于重新向
render:模板引擎渲染新页面
redirect:重定向跳到另一个页面
前端HTML页面
<!DOCTYPE HTML><HTML><head> <Meta charset="utf-8"> <Title>新url</Title> <link rel="stylesheet" href="/static/CSS/reset.CSS"> <link rel="stylesheet" href="/static/CSS/style.CSS"> <style type="text/CSS"> {#* { margin:0; padding:0; }#} li { List-style:none; } {#body { background-color: #222222; }#} .xs_ul { Font-size:0; line-height:0; } .xs_ul li {display:inline-block; Font-size:20px; line-height:20px; background:#fff;} .xs_ul li a { display:block; wIDth:80px; text-align:center; padding:15px 30px; border:1px solID #000; color:#999; text-decoration:none; } .xs_Box{ position: absolute; right: 50px; top: 40px; } </style></head><body><div class="xs_Box"> <ul class="xs_ul"> <!--点击增加班级跳转到新url中去添加信息--> <li class="xs_li_13"><a href="/add_classes/">增加班级</a></li></ul></div><section> <!--for demo wrap--> <h1>班级列表</h1> <div class="tbl-header"> <table cellpadding="0" cellspacing="0" border="0"> <thead> <tr> <th>ID</th> <th>班级名称</th> <th> *** 作</th> </tr> </thead> </table> </div> <div class="tbl-content"> <table cellpadding="0" cellspacing="0" border="0"> <tbody> {% for item in classes %} <tr> <td>{{ item.ID }}</td> <td>{{ item.name }}</td> <!--a标签提交数据只能通过GET提交,所以删除或者更新我们想要携带数据只能通过?在后面进行拼接--> <td><a href="/delete_classes/?ID={{ item.ID }}" onclick="return del()">删除</a>| <a href="/update_classes/?ID={{ item.ID }}">更新</a> </td> </tr> {% endfor %} </tbody> </table> </div></section><div class="made-with-love"> Made with <i>♥</i> by <a target="_blank" href="#">hesujian</a></div></body><script src="/static/Js/jquery.min.Js"></script><script src="/static/Js/index.Js"></script><script type="text/JavaScript" src="/static/Js/jq_button.Js"></script><script type="text/JavaScript" src="/static/Js/xs.Js"></script><script type="text/JavaScript"> $(document).ready(function() { $(".xs_li_13").xs999(13); });</script><script> function del() { let res = window.confirm("确认删除?"); if (res == false) { return false; }; }</script></HTML>HTML页面
后端路由管理并处理页面
def classes(request): # 生成一个 *** 作数据库 sq = Classes() classes = sq.select_all() # 返回一个页面(HTML与数据库融合过后的) return render(request,"classes.HTML",{"classes":classes})def add_classes(request): if request.method == ‘GET‘: # 如果请求方式是GET,那么说明是第一次按下添加 *** 作 # 返回一个新的静态页面让他去做添加 *** 作 return render(request,"add_class.HTML") else: # 如果请求方式是POST,那么说明是写好数据提交上来的 classname = request.POST.get("classname") sq = Classes() sq.add_data(classname) # 返回的是一个重定向的页面 return redirect("/classes/")def delete_classes(request): ID = request.GET.get("ID") sq = Classes() sq.delete_data(ID) return redirect(‘/classes/‘)def update_classes(request): sq = Classes() if request.method == ‘GET‘: ID = request.GET.get("ID") classes = sq.select_one(ID) return render(request,‘update_class.HTML‘,{‘class‘:classes}) else: ID = request.POST.get("ID") classname = request.POST.get("classname") sq.update_data(ID,classname) return redirect(‘/classes/‘)# 写好路由关系映射urlpatterns = [ url(r‘^admin/‘,admin.site.urls),url(r‘^classes‘,classes),url(r‘^add_classes‘,add_classes),url(r‘^delete_classes‘,delete_classes),url(r‘^update_classes‘,update_classes),]后端页面代码 模态对话框
主要通过AJAX与后台进行信息之间的交互,保证页面不进行刷新
通过给特定标签绑定click事件,在事件中通过jq对象对页面进行一些简单的修改以及与后台的数据交互
AJAX参数
$.AJAX({ type: ‘post‘,//向后台提交数据的方式 url: "/model_add_classes/",//提交给后台的url,因为这里是本站跳转,直接写uri就可以 data: {"classname": $(‘.classname‘).val()},//data是向后台提交的数据,用字典的方式传送,后台通过key进行取值 //success是后台成功返回信息的情况,对应函数里的参数就是后台发送的数据 success: function (data) { if (data == ‘ok‘) { //刷新页面通过 window.location.href = ‘/model_classes‘; window.location.href = ‘/model_classes‘; } else { $(‘.tips‘).text("用户名不能为空"); {#console.log(data);#} } ; },}); 后台与AJAX对应的代码
def model_classes(request): sq = Classes() classes = sq.select_all() # 正常访问页面还是通过render渲染一个页面回去 return render(request,"model_classes.HTML",{"classes": classes})def model_add_classes(request): # 前台通过AJAX传过来的数据返回的是文本,通过 httpResponse("ok") classname = request.POST.get("classname") if classname: sq = Classes() sq.add_data(classname) return httpResponse("ok") else: return httpResponse("notok")def check_classes(request): ID = request.POST.get("ID") sq = Classes() classes = sq.select_one(ID) return httpResponse(classes[‘name‘])def model_update_classes(request): ID = request.POST.get("ID") classname = request.POST.get("classname") sq = Classes() sq.update_data(ID,classname) return httpResponse("ok")urlpatterns = [ url(r‘^model_classes‘,model_classes),url(r‘^model_add_classes‘,model_add_classes),url(r‘^check_classes‘,check_classes),url(r‘^model_update_classes‘,model_update_classes)]后台代码 总结
以上是内存溢出为你收集整理的django-两种方式对单表的 *** 作全部内容,希望文章能够帮你解决django-两种方式对单表的 *** 作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)