mutipart Django默认有解释器 upload ajax 提交的时候
form提交的是 自己写的multipart/form-data 可以解释
1 http发送数据三种格式
enctype = 'mfd'告诉http协议,请求后端服务端的时候,发送的请求体里面的格式是multipart/form-data,这个格式发送的是片段数据,content-type
form 三种提交数据的方式
http:
content-type(请求头) view sorse
作用以什么规范来加工
content-type:
1 application/x-www-form-urlencoded
&符拼接的 一个键对应一个值
get url+数据
post 请求体
后端:
if request.Meta.get('content-type') == 'urlencoded':
request.body.split('&') ##[name=xx,pwd=ss]
---request.POST[]或者GET[] 放到里面
2 multipart/form-data
##分片发送
---request.FILES
3 appliaction/json
django 不支持 没有内置的关于json的解释器 需要自己解析
##{'name':xxx,'pwd':ssss}
---没有对应的解析器 数据在body里
拿原始数据 自己反序列化
前后端分离 前端发送 不是ajax而是absors 默认json
Django drf 专门做数据接口的
js json python
python解析成json dumps
js JSON.parse(res); 解析了
自己解析
{# var res1 = JSON.parse(res);#}
{#alert(res1.status);#}
{#alert(res1.info);#}
3 json和Django 数据类型 基本上是一一对应的
除了datetime 和date的
解决方法:
#对含有日期格式数据的json数据进行转换
class JsonCustomEncoder(json.JSONEncoder): # json的序列化器
def default(self, field):
if isinstance(field,datetime):
return field.strftime('%Y-%m-%d %H:%M:%s')
elif isinstance(field,date):
return field.strftime('%Y-%m-%d')
else:
return json.JSONEncoder.default(self,field)
d1 = datetime.Now()
dd = json.dumps(d1,cls=JsonCustomEncoder)
print(dd)
往前端传输数据,最好是列表,别的还得找键
Python | json | js |
---|---|---|
dict | object | 自定义对象 |
list | array | array |
今日内容回顾
form文件上传 form enctype = 'mutiple-form'
views:
request.FILES.get(‘标签name值’)
var formdata = new FormData();
formdata.append('file_obj',$('input[type=file][0].files[0]'));
formdata.append('csrfmiddlewaretoken',$('[name=csrfmiddlewaretoken]').val());
formdata.append('username',$('[name=username]').val());
$.ajax({
url:'路径',
type:'post',
data : formdata,
processData:false;
contentType:false;
success:function(res){}
})
request.FILES.get('file_obj')
file_obj = request.FILES.get('file_obj')
with open(file_obj.name,'wb')as f:
for data in file_obj:
f.write(data)
for cc in file_obj.chunks():
f.write(cc)
contenttype
三种类型
响应方法
HttpResponse('xxx')
HttpResponse(json.dups({'name':'xxx'}),content_type='app/json')
JsonResponse({'name':'liu'})
JsonResponse(其他类型,safe = False)
序列化
# 建议这种方式使用序列化
book_o = models.Book.objects.all().values('title','price')
books = list(book_o)
print(books) #[{'title': '三体', 'price': 22}]
时间日期序列化
json
返回页面
var url = res.url:
location.href = url;
{# location 跳转页面 dom:1个定时器 一个location#}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。