django小白必会三板斧
HttpResponse:返回字符串
render:返回html并且支持模板渲染
redirect:重定向
既可以重定向到别人的网址也可以定向到自己的
注意:1.路由访问如果不加斜杠 会内部自动重定向加斜杠的路由
问题
redirect重指向会多一个uri
Django可能会在更改后自动重启更新
form表单中的action?为什么一定是POST方式提交
建表
##建库的时候一定要指定utf
truncate classes
insert into classes (name) values ('一班')
班级表:
classes:
classes:
id name
1 脱产8期
create table classes(
id int primary key auto_increment,
name varchar(32) not null default ''
)engine=Innodb charset=utf8;
insert into classes (name) values ('脱产8期'), ('脱产九期'),('脱产10期');
学生表:
students
id name class_id
1 zekai 2
create table students (
id int primary key auto_increment,
name varchar(32) not null default '',
class_id int not null default 1,
foreign key (class_id) references classes(id)
)engine=Innodb charset=utf8;
insert into students (name, class_id) values ('季宇志', 1),('罗文', 2),('谢增城', 1);
teacher:
create table teacher (
id int primary key auto_increment,
name varchar(32) not null default ''
)engine=Innodb charset=utf8;
insert into teacher (name) values ('zekai'), ('eagon'),('lxx');
teacher2class:
create table teacher2class (
id int primary key auto_increment,
tid int not null default 1,
cid int not null default 1
)engine=Innodb charset=utf8;
insert into teacher2class (tid, cid) values (1,1), (1,2),(2,1),(2,2);
window.confirm('是否确认删除?')---弹出框
requset.POST获得的是一个字典:
{'user':['ww'],'pwd':['dd']}
key值为input中的name属性的值,ww(值)是用户提交的输入的内容
使用requset.POST.get('user')能够直接取到'ww',可以忽略[],如果'ww'所在列表中有不止一个元素,则默认获取最后一个.
作业day59
作业在第二个视频
取值和属性
$('#teachername').val()}
$(this).attr('val')
取得最后一个div前面所有的div,并且给他们
$("div:last").prevAll().addClass("before");
赋值:
$('#ajaxclassname').val(classname);
$('#clasid').val(classid);
取值:
var classname = $('#ajaxclassname').val();
var clasid = $('#clasid').val();
ajax获取输入数据和id的方法,新url的获取方式?
为什么要加lastrowid
bootstrop里面table?
7.13周六
各种提交数据取值方法
form表单
input / select+option提交
<form action="/add_student/" method="post">
学生名称: <input type="text" name="sname">
#input:通过name属性对应的值'sname'作为key,用户输入的内容作为value,后台通过request.POST.get('sname')获得用户输入的名字
班级名称:
<select name="classid" id="">
{% for item in classes %}
<option value="{{ item.id }}">{{ item.name }}</option>
#select:通过name属性对应的值'classid'作为key,用户选择的item.name会有对应属性value的值作为value,以
例:<QueryDict: {'sname': ['张帆'], 'cid': ['3']}> ({'classid':'item.id'})
注意:所以input和select的name属性的值不能相同(都会传到后台),否则后台requset.POST.get()默认取最后一个.
传给后台,后台通过request.POST.get('classid')获得用户选择的班级id
{% endfor %}
</select>
<input type="submit" value="提交">
</form>
复习mysql
为已经建好的mysql表单添加unique或者外键时,和添加一般列的方法一样,例如:alter table teacher2class add unique index(tid,cid);
注意: 一般操作表时,只有在更改表结构或者属性是才需要在表名前加table关键字,例如:删除表(drop table xxx 添加删除新列,或更改原有列的属性)
constraint fk_userinfo_depart foreign key (depart_id) references department(id),若是建表之后添加,则加上alter table 外键表 add即可
alter table teacher2class add constraint fk_t2c_teacher foreign key (tid) references teacher(id) on update cascade--级联更新,可选 on delete cascade--级联删除;
on update cascade--级联更新,可选 on delete cascade--级联删除;这两个在navicat里面设置比较方便
连表
https://jingyan.baidu.com/article/f3e34a12f05bfaf5ea65354a.html
sweetalert导入
<link href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
定制自己的通用模板
//定义模版 (可多次使用)
var MyBox = Swal.mixin({
toast: true,
position: 'top-end',
showConfirmButton: false,
timer: 3000
});
//调用
MyBox.fire({
type: 'success',
title: 'successfully'
});
a标签直接向函数传值
<a href="/up_students/?sid={{ item.sid }}">更改</a>
问号拼接,sid作为key,{{ item.sid }}作为value
后台以request.GET.get('sid')的方式获得{{ item.sid }}
注意:如果传递多个值,用&连接即可,例如:
<a href="/up_class/?id={{ item.id }}&pwd=123432">更新</a>
是否删除模板
swal({
title:"是否删除",
text:"",
type:"warning",
showCancelButton:true,//是否显示取消按钮
cancelButtonText:'取 消',//按钮内容
cancelButtonColor:'#b9b9b9',
showConfirmButton:true,
confirmButtonText:'确 认',
confirmButtonColor:"#dd6b55",
closeOnConfirm:false,//点击返回上一步操作
closeOnCancel:true
},function(){//正确按钮进行的操作点
$.ajax({
url: './test.json',
type: 'post',
dataType: 'json',
data: {"id": $('#inp').val()},
})
.done(function(res) {
if (!$('#inp').val()) {
swal("输入内容哦……");
return;
}
if (res.status == '000') {
swal('删除成功','请继续操作','success');
return;
}else{
swal('删除失败','','error');
}
// console.log("success");
})
.fail(function() {//连接服务器失败进行的操作
console.log("error");
})
.always(function() {
console.log("complete");
});
});