添加老师
def add_teacher(request):
if request.method == 'GET': #获取班级列表,以完善下拉框的值
sqlhelper.get_list("select id,title from class",[])
return render(request,'add_teacher.html',{'class_list':class_list})
else: #POST方法是提交添加老师的表单处理
name = request.POST.get('name')
class_ids = request.POST.getlist('class_ids') #获取多选值得时候使用getlist函数,否则使用get函数
teacher_id = sqlhelper.create("insert into teacher(name) value(%s)',[name,])
obj.sqlhelper.SqlHelper()
data_list = []
for cls_id in class_ids:
temp = (teacher_id,cls_id,)
data_list.append(temp)
obj.multiple_modify("insert into techer2class(teacher_id,class_id) values(%s,%s)',data_list)
obj.close()
return redict('/teacers/')
创建add_teacher.html文件:
<h1>添加老师</h1>
<form method="POST" action="/add_teacher/">
<p><input type="text" name="name" placeholder="老师姓名" /></p>
<p>
<select multiple size="10" name="class_ids">
{% for item in class_list %}
<option value="{{ item.id }}">{{ item.title }}</option>
{% endfor %}
</select>
</p>
<input type="submit" value="提交" />
</form>
重新定义sqlhelper.py
def modify(sql,args):
conn = pymysql.connect(host,port,user,password,db,charset)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute(sql,args)
conn.commit()
cursor.close()
conn.close()
def create(sql,args):
conn = pymysql.connect(host,port,user,password,db,charset)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute(sql,args)
conn.commit()
last_row_id = cursor.lastrowid
cursor.close()
conn.close()
return last_row_id
def get_list(sql,args):
conn=pymysql.connect(...)
cursor = conn.cursor(cursor=pymysql.cursor.DictCursor)
cursor.execute(sql,args)
result = cursor.fetchall()
cursor.close()
conn.close()
return result
def get_one(sql,args):
conn = pymysql.connect(...)
cursor = conn.cursor(cursor=pymysql.cursor.DictCursor)
cursor.execute(sql,args)
result = cursor.fetchone()
cursor.close()
conn.close()
return result
class SqlHelper((object):
def __init__(self): #实例化类对象的时候会自动执行
self.connect()
def connect(self):
self.conn = pymysql.connect(...)
self.cursor = self.conn.cursor(cursor=pymysql.cursor.DictCursor)
def get_list(self,sql,args):
self.cursor.execute(sql,args)
result = self.cursor.fetchall()
return result
def modify(self,sql,args):
self.cursor.execute(sql,args)
self.conn.commit()
def create(self,sql,args):
self.cursor.execute(sql,args)
self.conn.commit()
return self.cursor.lastrowid
def multiple_modify(self,sql,args):
self.cursor.executemany(sql,args)
self.conn.commit()
def close(self):
self.cursor.close()
self.conn.close()
定义好sqlhelper类后,按照如下方法使用,这样可以避免每次都conn数据库,减少时间和资源消耗。
obj = SqlHelper()
obj.multiple_modify()
obj.get_list()
obj.close()