choice参数
class Userinfo(models.Model):
username = ...
age = ...
gender_choice = (
(1,'male'),
(2,'female'),
(3,'others'),
)
gender = models.IntegerField(choices=gender_choice)
# gender存的是数字 如果数字在上面的对应关系中 那么在取值的时候 可以通过
user_obj.gender # 数字
user_obj.get_gender_display() # 取到的就是数字对应的解释
# 如果存的数字不在范围内 拿到的还是数字本身
MTV与MVC模型
MTV:
M:models
T:templates
V:views
MVC:
M:models
V:views
C:controller
本质:MTV其实也是MVC
Ajax
异步提交
局部刷新
我们所用的ajax是基于jQuery封装好简易版本,所以在写ajax时候一定要确保导入jQuery
ajax基本语法结构
$.ajax({
url:'', # 指定朝哪个后端地址发送请求 不写默认朝当前地址提交
type:'post', # 指定提交方式
data:{'username':'jason','password':'123'},
success:function(data){ # data指代的就是后端返回的异步提交的结果
# 异步回调机制逻辑处理代码
}
})
前后端传输数据的编码格式
编码格式种类
1.urlencoded
2.formdata
3.application/json
form表单
form表单默认的编码格式是urlencoded
urlencoded编码格式的数据特点
username=jason&password=123&age=18
# django后端针对符合urlencoded数据格式 会自动解析 并给你封装到request.POST中
# 你可以通过制定enctype参数来修改form表单提交数据的编码格式
# form表单传输文件的时候 编码格式就必须有默认的改为formdata
"""
即可以传普通的键值对也可以上传文件
django后端针对只要是符合urlencoded格式的数据都会自动解析放到request.POST
针对文件数据 会解析并放到request.FILES
"""
ajax 默认的数据编码格式也是urlencoded
也就意味着ajax发送post请求django后端默认也是通过request.POST获取数据
ajax发送json格式数据
如何查看前端提交数据的编码格式?
在请求头中有一个content-Type参数
"""
前后端交互数据的时候 一定要做到数据个编码格式的一致性
"""
1.需要手动指定编码格式
contentType:'application/json'
2.一定要确保数据也是符合json格式的
data:JSON.stringify({'username':'jason'})
# django后端针对json格式的数据 是不会做任何处理的 会原封不动的放在request.body中
你可以手动去处理获取数据
1.将bytes类型转成json格式字符串
2.利用json模块json.loads反序列化出来
ajax传输文件
ajax传文件 需要使用到js内置对象 FormData
该对象及可以携带普通的键值对 给django后端的request.POST也可以携带文件给django后端的request.FILES
# 1.现生成一个formdata对象
var MyFormData = new FormData();
# 2.添加普通的键值对
MyFormData.append('username','jason');
MyFormData.append('password','123');
# 3.添加文件
var fileObj = $('#myfile')[0].files[0];
MyFormData.append('myfile',fileObj)
"""
如何获取type=file的input标签存储的用户上传文件
"""
$.ajax({
url:'',
type:'post',
data:MyFormData,
# 需要手动指定两个关键性的参数
contentType:false,
processData:false,
success:function(data){
...
}
})
序列化组件
from django.core imprt seralizers
user_queryset = models.Userinfo.objects.all()
res = seralizers.Seralizer('json',user_queryset)
"""
res = [{},{},{}]
"""
return HttpResponse(res)