查询续与ajax
查询分组
事例:统计不止一个作者的图书:(作者数量大于一)
Book.objects.all().values('name').annotate(author_num=Count('authors__name')).
filter(author_num__gt=1).values('name','author_num')
总结:valu再annotate前,代表group by 的字段,不写value,默认以基表的主键做group by
在后代表我要select出来的字段
#filter在前,代指where的东西,在后,代表having 的东西
ajax应用:
什么是Ajax
AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML,现在更多使用json数据)。
优点:
- AJAX使用Javascript技术向服务器发送异步请求
- AJAX无须刷新整个页面
1 基本应用:
$.ajax({
url:'/ajax_next/',
type:'get',
data:{'n1':n1,'n2':n2},
success:function (data) {
alert(data)
$("#sum").val(data)
}
})
views中在get中取出
2 提交json数据
$('#btn').click(function () {
let name = $('[name="name"]').val();
let password = $('[name="pwd"]').val();
let ss=JSON.stringify({'name':name,'pwd':password});
let a = JSON.parse(ss); # json反解,在这里没有用
$.ajax({
url:'/test/',
method:'post',
contentType:'application/json',
data:ss,
success:function (date) {
alert(date)
}
})
})
views中需要自己从body取出来,后续处理
3 上传文件:
$(".btn").click(function () {
var formdata=new FormData();
console.log(typeof formdata);
formdata.append('name',$('[name="name"]').val());
formdata.append('pwd',$('[name="pwd"]').val());
formdata.append('myfile',$("#myfile")[0].files[0]);
console.log(formdata);
$.ajax({
url: '/ajax_next/',
type: 'post',
contentType: false, //告诉jQuery不要去处理发送的数据
processData:false, // 告诉jQuery不要去设置Content-Type请求头
data: formdata,
success: function (data) {
alert(data)
}
})
})
views中需要自己从POST与body中取出来,后续处理