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找到烦死。
传参时,位置的形参一定要定位好。