Django之ajax

Django之ajax

前后端传输数据的编码格式(理论篇)

"""
	只研究post请求的编码格式,get不研究
	url?username=xxx&password=yyy,这就是get提交的
"""
form表单能够2种:
	1. urlencoded
    2. form-data
# json格式的数据form表单无法提交

能够提交json的格式有:
	1. ajax
    2. 第三方工具:postman
    
form表单提交数据的编码格式:
	1. 默认是urlencoded(显示为application/x-www-form-urlencoded)
    # 对于urlencoded格式的数据,django后端都会给封装到request.POST中取
    2. 也可手动修改为form-data(显示为multipart/form-data)
    # 改完后可以提交文件数据,普通数据还是和urlencoded一样,但是文件数据都封装到request.FILES中
    
ajax默认的提交格式是:Content-Type: application/x-www-form-urlencoded
django后端也是把数据都封装到了request.POST中

ajax提交json格式的数据

ajax提交json格式的数据:
	1. content-type必须是:json(默认是urlencoded)
    2. 传输的数据必须是json格式的
    # ajax提交的json格式数据,django后端没有把数据封装到request.POST中
    在Django后端使用request.body,可以获取ajax提交的json格式的数据
    # 针对ajax提交的json格式数据,django后端没有做任何的封装,纯原生数据,在request.body中,需要我们自己手动处理数据格式

# 使用如下    
$.ajax({
            url: '',
            type: 'post',
           	data: JSON.stringify({'a': 1, 'b': 2, c: 3}),  # 2
            // 更改contenttype
    
    		contentType:'application/json',  # 1
            success: function () {

            }
        })

ajax提交文件数据

var myfile = $("#myfile")[0].files[0];  # 获取文件数据
# ajax提交文件数据,需要借助于form-data
var myFormDataObj = new FormData();

var myFormDataObj = new FormData();
myFormDataObj.append('username', username);
myFormDataObj.append('password', password);
myFormDataObj.append('myfile', myfile);  # 提交文件数据
$.ajax({
            url: '',
            type: 'post',
            data: myFormDataObj,
            contentType: false, // 告诉浏览器不要给我修改任何的编码格式
            processData:false,// 告诉浏览器不要对我的数据进行任何的修改或者干扰
            success: function () {

            }
        })
"""
	总结:
       1. var myFormDataObj = new FormData();
       2. 获取数据,然后添加到myFormDataObj
            myFormDataObj.append('password', password);
            // 提交文件数据、
            myFormDataObj.append('myfile', myfile);
       3. 修改参数:
            contentType: false, // 告诉浏览器不要给我修改任何的编码格式
            processData:false,// 告诉浏览器不要对我的数据进行任何的修改或者干扰
       4. 在django后端,普通数据还是在request.POST中,文件数据在
            request.FILES里面
"""

ajax结合layer弹窗实现删除的二次确认

# 1. 学会如何使用第三方工具-------》去看人家写的文档,根据文档把工具学会使用就行
https://layuiweb.com/layer/index.htm

django自带的序列化组件(了解)

# 让你从数据库总查询几条数据,然后序序列化给到前端,列表套字段的形式[{},{},{}]
from django.core import serializers
def ab_ser(request):
    user_list = models.Book.objects.all()
    # print(user_list) # <QuerySet [<Book: Book object (2)>, <Book: Book object (3)>, <Book: Book object (4)>]>
    # book_list = []
    # for obj in user_list:
    #     tmp = {
    #         'pk':obj.pk,
    #         'username':obj.username,
    #     }
    #     book_list.append(tmp)
    book_list = serializers.serialize('json', user_list)  # 了解
    return JsonResponse(book_list,safe=False)

批量插入数据

# 让你往book表插入10000条数据

select * from app01 limit 1,500  # 第一页
select * from app01 limit 501,1000  # 第二页
select * from app01 limit 1001,1500  # 第三页


# select * from app01
select * from app01 limit 99501,100000 # 最后一页
    from app01 import models

    # for i in range(10000):
    #     models.Book.objects.create(username='%s' % i)

    book_list = []
    for i in range(100000):
        book_obj = models.Book(username='%s' % i)
        book_list.append(book_obj)
    # book_list     一次插入多条数据 insert into table (username) values(1,'kevin'),(1,'kevin'),(1,'kevin'),(1,'kevin'),(1,'kevin'),(1,'kevin')
    models.Book.objects.bulk_create(book_list)
    # 不管数据有多大,只要不去查库,效率都可以忽略,
    '''以后再实际项目中,能够一次操作数据库完成的动作,就要尽量使用一次性的,'''

posted @   橘子熊何妨  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示