zoukankan      html  css  js  c++  java
  • ajax前后端分离

    本周内容

    ​ 今日内容

    ​ ajax结合sweetalert实现删除按钮动态效果

    ​ bulk_create批量插入数据

    ​ 自定义分页器

    ​ 多对多三种创建方式

    ​ 明日内容

    ​ forms组件

    ​ cookies与session操作

    ​ django中间件

    ​ 跨站请求伪造csrf

    ​ auth模块

    ​ BBS小作业

    ​ FBV

    上周内容回顾

    ​ orm查询优化

    ​ only与defer

    ​ only方法返回的是一个queryset对象,本质就是列表套数据对象

    ​ 该对象内只含有only括号内锁指定的属性(其他属性也可以获取但是要重新走数据库)

    ​ defer与之相反

    ​ select_related与prefetch_related

    ​ select_related

    ​ 括号内只能放外键字段,而且外键字段只能是一堆一,一对多

    ​ 内部是联表操作,会将外键关联的表与当前表直接拼接起来,然后再执行查询操作,返回的也是一个queryset,该数据对象获取当前表中的数据或者关联表中的数据 都不会再走数据库

    ​ prefetch_related

    ​ 括号内外键字段 类型全部支持,内部是子查询 但是给用户的感觉象是联表操作,返回的结果也是一个queryset 该数据对象获取当前表中的数据或者关联表中的数据 都不会再走数据库

    ​ 第一个方法耗时再联表操作

    ​ 第二个方法耗时再查询次数

    ​ choices参数

    ​ 主要用在一些可以明确给出所有可能性的地方

    ​ 如 性别,学历,婚否等

    ​ 先提前定义好对应关系

    ​ 再通过字段的choices参数来指定关系

    ​ MTV与MVC模型

    ​ models templates views

    ​ models views controller

    ​ django自称是mtv实际上还是mvc

    ​ ajax

    ​ 异步提交

    ​ 局部刷新

    ​ ajax基本语法结构

    ​ 我们学的是基于jquery封装好的ajax

    ​ 所以使用的时候一定要确保jquery正常导入

    ​ $.ajax({

    ​ url:'',

    ​ type:'',

    ​ data:{''},

    ​ success:function(data){}

    ​ })

    ​ 前后端数据编码格式

    ​ urlencoded

    ​ 数据格式username=jason&password=123

    ​ django针对符合urlencoded编码格式的数据,并会自动解析饼帮你放到request.POST总

    ​ formdata

    ​ form表单发送文件必须要指定的编码模式

    ​ 该变啊格式既可以发文件也可以发普通键值对

    ​ django会自动识别,讲内部符合urlencoded编码格式的数据自动解析,并放大到request.POST中

    ​ 讲文件类型的数据,自动解析放到request.FILES中

    		application/json
    

    ​ 目前只有ajax可以发送json格式的数据 form表单是不支持的

    ​ ajax如何发送json格式的数据

    ​ 1.需要新建一个参数

    ​ contentType:'application/json'

    ​ 2.需要讲数据序列化成json格式的字符串

    ​ JSON.stringify({})

    ​ ajax发送文件(不单单可以发送文件也可以发普通键值对)

    ​ 1.先要生成一个内置对象

    ​ var myFormData =new FormData();

    ​ 2.你可以不停添加数据

    ​ myformdata.append('name','value')

    ​ 如歌获取inout文件标签内的文件数据

    ​ var myfileObj=$('input[type='file']')[0].file[0];

    ​ MyFormData.appendd('name2',myfileObj)

    3.需要额外两个指定的参数

    ​ contentType:false, #不指定任何编码 对象自带编码 django能够识别

    ​ processData:false #浏览器不要对数据进行任何处理

    django可以识别对象中的普通键值对和文件对象,然后分别放到不同的方法POST和FILES中

    ajax与sweetalert参考代码即可

    ​ CV打法结合二次开发

    bulk_create批量插入数据

    ​ for i in range (1000):

    ​ models.book.object.create(title='第%本书'%i)

    ​ (这里不复刻了,就是说这条指令运行很慢,花了六百多毫秒)

    ​ book_list=[]

    ​ for i in rage(10000):

    ​ book_list.append(models.book(title='第%本书'%i))

    ​ models.Book.object.bulk_create(book_list)

    ​ """两者差距很大"""

    自定义分页器

    ​ 代码不需要掌握,只需要掌握推倒思路

    要求你掌握的是自定义分页器的使用方法

    后端

    ​ 自定义分页器的使用

    book_queryset=models.book.objects.all()#你想要分页展示的数据

    current_page=request.GET.get('page',1)#获取当前页

    all_count=book_queryset.count()#看一共有多少条数据

    page_queryset=book_queryset[page_obj.start:page_obj.end]

    return render (request.'index.html',locals())

    前端

    ​ {% for book in page_queryset %} 讲页面上原本的queryset全部还成切片之后的queryset即可

    <p>{{book}}</p>

    {% endfor %}

    {{page_obj.page_html|safe}}告诉这是安全的可以读取

  • 相关阅读:
    Ubuntu MP4转MP3 软件:soundconverter
    Jupyter 中添加conda环境
    Pandas 比较两个 DataFrames 是否相同
    苹果ID不能登陆:The action could not be completed. Try again
    awsome node.js
    Cygwin
    library dep
    process
    MSCV version
    cmake_host_system_information
  • 原文地址:https://www.cnblogs.com/jimGraymane/p/11979423.html
Copyright © 2011-2022 走看看