#学生管理系统迭代三
前面版本完成了 1、学生表: 新url方式增删改查 模态对话框ajax方式完成增更 2、教师表: 新url方式增删改查 模态对话框ajax方式完成增更 3、学生表: 新url方式增删改查 这个版本: 1、学生表: 模态对话框ajax方式完成增改 2、教师表: 教师表从新做,因为之前教师表只是显示教师id和name,所以查询教师表时要看到班级列表,要连表查询了
查询功能:
获取多个值: classid = request.POST.getlist('classid')
增加功能:
### 1. tname需要添加到teacher表中 最后一个lastrowid
### 2. teacher2class (lastrowid, 2), (lastrowid, 3), (lastrowid, 7) ====> executeMany()
核心代码:
sql = "insert into teacher(name) values(%s)"
teacherlastid =Sqlmanager().add_num(sql, (teachername,))
for cid in classid:
sql = "insert into teacher2class(tid,cid) values(%s,%s)“
sqlmanager.add_num(sql,(teacherlastid,cid))
更新:
更新教师所教的班级,也要罗列出所有班级,select选用
<form action="/up_teacher/" method="post">
<input type="hidden" name="teacher_id" value={{ teacher_id }}>
教师名称:<input type="text" name="teachername" value={{ teachername }}><br>
班级名称:
<select name="classid" id="" multiple>
{% for item in classes %}
<option value="{{ item.id }}">{{ item.name }}</option>
{% endfor %}
</select>
<input type="submit" value="提交">
</form>
3、后台管理页面布局 这里涉及Django中母版和子板、继承关系、bootstrap框架的运用、 4、Django框架中cookie使用 参数、
##前端对后端传过来的json数据处理方式
#json数据处理三种方式(前面说了两种) 1、直接对数据进行反序列化得到字符串 json.dumps(data) 2、后端直接使用Django提供的JsonResponse,自动处理序列化的数据 3、在ajax中: dataType : "json", 作用相当于 JSON.parse() 查询网址:http://jquery.cuishifeng.cn/jQuery.Ajax.html #在更新学生表时,班级下拉框默认选中当前所在班级 方法1:通过判断 核心代码如下 选择班级: <select name="classid" id=""> {% for item in classes %} {% if student.cid == item.id %} <option value="{{ item.id }}" selected>{{ item.name }}</option> {% else %} <option value="{{ item.id }}">{{ item.name }}</option> {% endif %} {% endfor %} 方法2:通过后台传到前台的数据中获取到班级的id,然后根据id直接拿到默认的当前班级名(核心代码) 自定义一个属性 <td classid="{{ item.cid }}">{{ item.cname }}</td> {#得到班级id#} var clsid = $(stu[0]).attr('classid'); 固定默认班级对应的名称 $('.classid').val(clsid)
##前端布局管理(资源链接地址)
#前端设计资源库(常用) 1、http://webcolor.chrafz.com/ 取色库 2、http://www.fontawesome.com.cn/faicons/ 图标库 图标库的话,要下载到本地,拷贝到项目中引用即可 3、https://www.bootcss.com/ bootstrap框架 前端设计中可使用该框架中提供的诸多资源,直接拷贝 4、https://www.runoob.com/bootstrap/bootstrap-forms.html bootstrap框架 5、http://jquery.cuishifeng.cn/ jquery框架中文版
6、https://www.layui.com/demo/ 前端设计
7、分页工具资源链接:dataTables (https://datatables.net) #注意 jquery文件必须放置在bootstrap.js之上
##Django模板语言中的母版和子板
#传统做法:把所有代码拷贝到布局页面中 缺点: 1. 如果改某一块文字, 所有的页面都要点开改一遍 母版: 布局页面:layout.html 三个占位符: 内容占位符: {% block mycontent %} {% endblock %} css占位符: {% block mycss %} {% endblock %} js占位符: {% block myjs %} {% endblock %} 子板: 继承母版: {% extends "layout.html" %} 替换三个占位符: 内容占位符: {% block mycontent %} {% endblock %} css占位符: {% block mycss %} {% endblock %} js占位符: {% block myjs %} {% endblock %}
##Django中操作cookie
#cookie作用 1. cookie是存在 客户端的 2. cookie用来验证用户登录验证的信息的 3. cookie是可以被禁用掉 #登陆成功之后, 设置cookie: obj = redirect('/classes/') obj.set_cookie("k1", "ndsjandjsanjdsanjdknsajdnsajndjsad") return obj
后台获取cookie并判断:
cookie = request.COOKIES.get('k1')
if not cookie:
return redirect("/login/")
#cookie参数介绍 set_cookie(): key: cookie的key value: cookie的 key对应的值 max_age: cookie的失效时间 expires: 失效时间 path : cookie在哪个路径下生效 domain:域名
secure=False: https httponly=False : 只能在http中传递, 不能使用js获取cookie #补充加密的cookie set_signed_cookie(key, val, salt)
js获取cookie:document.cookie