django-两种方式对单表的 *** 作

django-两种方式对单表的 *** 作,第1张

概述单表 *** 作的内容 我们这里对数据库单表的 *** 作包含增删改查四部分 具体链接数据库的方式我们是通过pymysql,当然你也可以用其他的。 两种方式的概念与区别 1、新url的方式   主要就是我们每一次向后台提交并访问数据时,后台都会给我们   跳转到一个新的界面,来完成我们的 *** 作 2、模态对话框的方式   就是我们可以在页面不刷新的情况下,完成前后台数据之间的交互 两者最大的区别就是新url肯定会刷新 单表 *** 作的内容

我们这里对数据库单表的 *** 作包含增删改查四部分

具体链接数据库的方式我们是通过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-两种方式对单表的 *** 作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1198024.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存