python搬砖狗

导航

 

Django 下在客服端下操作数据库表中数据

数据的操作无非就是对得到的数据进行增删改查,取出表中的数据用的是pymysql模块,在业务逻辑中为了防止重复代码首先要对pymysql进行封装。这里我选择在外部拼接出sql语句作为参数传入:

class my_pymysql:
    def __init__(self):
    #通过__init__来生成链接对象和游标对象,并指定取出的数据是以字典的形式取出,取出多条数据,以列表套字典的形式给出 self.conn
= pymysql.connect(host='127.0.0.1',user='root',password='123',database='db3',charset='utf8') self.cursor = self.conn.cursor(cursor=pymysql.cursors.DictCursor)   #将pymyaql增删改查的方法封装成函数,方便对数据进=进行操作 def get_one(self,sql,id): self.cursor.execute(sql,id) self.conn.commit() return self.cursor.fetchone() def get_all(self,sql): self.cursor.execute(sql) self.conn.commit() return self.cursor.fetchall() def remove(self,sql,id): self.cursor.execute(sql,id) self.conn.commit() return def add(self,sql,name): self.cursor.execute(sql,name) self.conn.commit() return def update(self,sql,*args): self.cursor.execute(sql,args) self.conn.commit() return

本次分别对两张表的数据进行操作,将数据取出后,通过模板渲染将数据和html融合我们在客户端通过去我们设置的按钮和我们通过jq绑定的触发事件来与后台形成交互,完成数据相关的操作。

建立好正确的映射关系:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^classes/', classes),
    url(r'^add_class/', add_class),
    url(r'^del_class/', del_class),
    url(r'^update_class/', update_class),
    url(r'^teachers/', teachers),
    url(r'^add_teacher/',add_teacher),
    url(r'^del_teacher/', del_teacher),
    url(r'^update_teacher/', update_teacher),
    url(r'^d_add_teacher/', d_add_teacher),
    url(r'^d_add_class/', d_add_class),
]

完成数据操作有两种方式,1 url方式 2 用ajxa 模态框 

用url 完成需要跳转页面,而模态框 不用跳转页面,在不刷新页面的情况下,与后台进行交互,现在使用的最多的就是这个。

    $('#tijiao').click(function () {
        $.ajax({
            type:'post',
            url:'/d_add_class/',
            data:{'classname':$('#classname').val()},
            success:function (res) {
                if(res == '添加成功'){
                    alert('完事了');
                    window.location.href = '/classes/'
                }else{
                    alert('添加失败');
                    $('#error').text(data)
                }
            }
        })
    })

删除数据时的弹出框确认,原理是,当选择删除时,如果我们点击确定删除,就会向后台发出请求。如果我们选择,取消就会拦截向后台请求交互的命令

并回到请求页面。

<a href="/del_class/?id={{ item.id }}" onclick="return del();">删除</a>
<script type="text/javascript">
    function del (){
        res = window.confirm('确定要删除吗');
        if (res == false){
            return false
    }
}
</script>

书写时注意小事项:前后台交互时,映射的关键名必须对应好不能有错,在数据操作完成后需要做模板的时候要加上.html后缀,不然会找bug找到烦死。

传参时,位置的形参一定要定位好。

 

posted on 2019-07-10 22:03  python搬砖狗  阅读(182)  评论(0编辑  收藏  举报