微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ajax

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

今日内容回顾

ajax文件上传

form文件上传 form enctype = 'mutiple-form'

views:

​ request.FILES.get(‘标签name值’)

ajax文件上传

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] 举报,一经查实,本站将立刻删除。

相关推荐