Django实现学员管理系统
本文实例为大家分享了Django实现学员管理系统的具体代码,供大家参考,具体内容如下
要求:实现数据的增删改查功能,并同步至数据库中。此项目实现了前端以及后端的结合。
(1)先在settings里配置static(存放的是css样式、js代码、以及imgs),可以加在文件末尾
STATIC_URL='/static/' STATICFILES_DIRS=[ os.path.join(BASE_DIR,'static') ]
(2)首先,新建一个django项目,在项目下的urls.py文件里,配置跳转路由,跳转到首页
urls.py
fromdjango.conf.urlsimporturl,include fromdjango.contribimportadmin urlpatterns=[ url(r'^admin/',admin.site.urls), url(r'^student/',include('student.urls')) ]
(3)通过pythonmanage.pystartappstudent命令创建一个student的app(不要忘记在settings中配置一下),并在models.py下执行mysql操作,在这里我们就直接在数据库里手动创建表,不再使用sql语句创建表了
models.py
importpymysql #Createyourmodelshere. #管理数据库 classDBManager(object): @classmethod defopen_sql(cls): conn=pymysql.connect( host='127.0.0.1', port=3306, db='students', user='root', password='123456', use_unicode=True, charset='utf8' ) DBManager.conn=conn DBManager.cursor=conn.cursor() @classmethod defclose_sql(cls): DBManager.conn.commit() DBManager.cursor.close() DBManager.conn.close() #数据模型类 classStudnetModel(object): def__init__(self,s_id,s_name,s_phone): self.s_id=s_id self.s_name=s_name self.s_phone=s_phone self.table='students' defsave(self): """ 保存数据模型到数据库 :return:False表示数据已存在True表示保存数据成功 """ DBManager.open_sql() #如果s_id已存在,说明学号已存在 sql=f'SELECT*FROMstudentsWHEREs_id={self.s_id}' ifDBManager.cursor.execute(sql)>0: #数据已存在,插入失败 returnFalse else: #插入数据 sql='INSERTINTOstudents(s_id,s_name,s_phone)VALUES(%s,%s,%s)' DBManager.cursor.execute(sql,(self.s_id,self.s_name,self.s_phone)) DBManager.close_sql() returnTrue @classmethod defdelete(cls,s_id): """ 根据s_id删除数据 :params_id:要删除数据的id :return:False表示该数据不存在True删除成功 """ DBManager.open_sql() #删除的sql语句 sql=f'DELETEFROMstudentsWHEREs_id={s_id}' DBManager.cursor.execute(sql) #rowcount执行sql语句影响的数据条数 ifDBManager.cursor.rowcount>0: DBManager.close_sql() returnTrue else: returnFalse @classmethod defobject_with_id(cls,s_id): DBManager.open_sql() sql=f'SELECT*FROMstudentsWHEREs_id={s_id}' DBManager.cursor.execute(sql) #取出拿到的数据 result=DBManager.cursor.fetchone() DBManager.close_sql() ifresult: #返回StudentModel对象 returncls(result[0],result[1],result[2],) defmodify(self): DBManager.open_sql() sql=f"UPDATEstudentsSETs_name='{self.s_name}',s_phone='{self.s_phone}'WHEREs_id={self.s_id}" DBManager.cursor.execute(sql) ifDBManager.cursor.rowcount>0: DBManager.close_sql() returnTrue else: returnFalse @classmethod defobjects(cls): #只要调用该函数,返回数据库中所有的数据 DBManager.open_sql() sql='SELECT*FROMstudents' DBManager.cursor.execute(sql) #取出查询的所有数据,results是一个大元组 results=DBManager.cursor.fetchall() #将results中每一个小元组转换为StudentModel对象 students=map(lambdat:cls(t[0],t[1],t[2]),results) #关闭数据库 DBManager.close_sql() returnstudents if__name__=='__main__': StudnetModel.objects()
(4)接下来在自己新建的app下,再手动创建一个urls.py文件,用来配置具体路由,并在views.py文件里实现视图函数(存放具体的增删改查功能的函数)
student/urls.py
fromdjango.conf.urlsimporturl from.viewsimport* urlpatterns=[ url(r'^$',student_index,name='stu_index'), url(r'^modify/(?P\d+)/$',student_modify,name='modify'), url(r'^addstu/$',student_add,name='addstu'), url(r'^delstu/(?P \d+)/$',student_del,name='delstu'), ]
student/views.py
fromdjango.shortcutsimportrender,redirect fromdjango.httpimportHttpResponse from.modelsimportStudnetModel #Createyourviewshere. defstudent_index(reqeust): #取出数据库中所有的数据 students=StudnetModel.objects() returnrender(reqeust,'index.html',{'students':students}) defstudent_add(request): ifrequest.method=='POST': #取出数据 s_id=request.POST.get('id',None) s_name=request.POST.get('name',None) s_phone=request.POST.get('phone',None) ifs_idands_nameands_phone: try: int(s_id) exceptExceptionase: returnHttpResponse('id必须是纯数字!') #创建数据模型对象 stu=StudnetModel(s_id,s_name,s_phone) #保存数据 ifstu.save(): #重定向到首页 returnredirect('/student') else: #返回提示信息 returnHttpResponse('该学号已存在!') else: returnHttpResponse('添加信息不能为空!') else: #其他访问方式,重定向到主页 returnredirect('/student') defstudent_del(request,s_id): ifrequest.method=='GET': #MTV设计模式 #根据id判断是否存在 ifStudnetModel.delete(s_id): #删除成功 returnredirect('/student') else: #删除数据不存在 returnHttpResponse('要删除的数据不存在!') defstudent_modify(request,s_id): ifrequest.method=='GET': #根据s_id查询这个id对应的信息 stu=StudnetModel.object_with_id(s_id) ifstu: returnrender(request,'modify.html',{'stu':stu}) else: returnHttpResponse('要修改的学员id不存在!!') elifrequest.method=='POST': #取出修改后的参数 s_name=request.POST.get('name') s_phone=request.POST.get('phone') stu=StudnetModel(s_id,s_name,s_phone) ifstu.modify(): returnredirect('/student') else: returnHttpResponse('修改失败,请稍后重试!')
(5)最后就是在html代码中实现路由跳转,实现功能
首页html,index.html
{%loadstatic%}切换导航 学员管理系统