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%}
切换导航
学员管理系统