orm查询优化

1)only与refer

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

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

defer与only互为反关系,返回的是一个queryset对象,本质就是列表套数据对象;该对象只含有除了defer括号内所指定的属性(括号内的属性也可以获取但是需要重新走数据库)

2)select_related与prefetch_related

select_related括号内只能放外键字段,并且外键字段的类型只能是一对一或一对多,内部是联表操作,会将外键关联的表与当前表直接拼接起来,然后再执行查询操作,返回的结果也是一个queryset,列表套数据对象,该数据对象获取当前表中的数据或者关联表中的数据,都不会再走数据库;

prefetch_related 括号内外键字段全部支持,内部是子查询,返回的结果也是一个queryset对象,列表套数据对象,该数据对象获取当前表中的数据或者关联表中的数据,都不会再走数据库;

第一个方法耗时主要耗在联表操作,第二个方法耗时主要耗在查询次数;

choices字段

用在一些字段数据是可以明确列出所有的可能的;比如:性别,工作经验,学历,婚否,客户来源等;

1.先定义好对应关系;2.在通过字段的choices参数来指定关系。

gender_choices = (

​ (1,'male'),

​ (2,'female'),

​ (3,'others'),

)

gender = models.IntegerField(choices = gender_choices)

如果数据在你事先定义好的范围内,可以通过get_字段名_display()拿到对应的解释信息。

ajax

  1. 异步提交 2.局部刷新

ajax基本语法结构

现用的是基于JQuery封装好的ajax,所以用ajax的时候,先导入jQuery;

$.ajax({
url:'', # 后端的地址,特性跟action一直,三种情况
type:'post', # 请求方式,小写
data:{'username':'zhang',password:'123'}, # 提交的数据
success:function(data){ # data异步提交的结果
# 回调机制返回的结果
# window.location.href = url
}
})
#基于ajax做数据交互,后端无论返回什么结果都会被回调函数捕获,不会再影响整个页面

前后端数据传输编码格式

urlencoded
数据格式username=zhang&password=123
django针对符合urlencoded编码格式的数据,会自动解析并放到request.POST中; formdata
form表单发送文件必须要指定的编码格式
该编码格式既可以发文件也可以发普通的键值对 django后端自动识别,将内部符合urlencoded编码格式的数据,自动解析并将文件类型的数据解析封装到request.FILES中 application/json
ajax可以发送json格式的数据,form表单不支持
#注意:数据类型和编码格式要保证一致性

ajax如何发送json格式的数据

  1. 需要在前端新增一个参数

    contentType:'application/json'

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

    JSON.stringfy({'username':'zhang','password':'123'})

    注意:django后端针对json格式的数据,不会做任何处理,原封不动的在放request.body内

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

建议借助原生js的内置对象帮你做数据携带

1).先生成一个内置对象

var MyFormData = new FormData();

2).然后朝该对象内添加数据(普通键值对和文件均可)

普通键值对

MyFormData.append('name','value')

MyFormData.append('name1','value1')

MyFormData.append('name2','value2')

文件数据

如何获取input文件标签内文件数据

var MyFileobj = $("input[type='file']")[0].files[0];

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

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

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

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

django查询优化及ajax编码格式下发送数据 总结的更多相关文章

  1. 关于form表单或者Ajax向后台发送数据时,数据格式的探究

    最近在做一个资产管理系统项目,其中有一个部分是客户端向服务端发送采集到的数据的,服务端是Django写的,客户端需要用rrequests模块模拟发送请求 假设发送的数据是这样的: data = {'s ...

  2. ajax处理回调函数,用ajax向后台发送数据

    这是我的后台返回给前台的数据: 处理后台返回的数据有一下两种方式: function sethouse_housing_pattern(housing_pattern){ var str=[]; va ...

  3. 前端笔记之服务器&Ajax(下)数据请求&解决跨域&三级联动&session&堆栈

    一.请求后端的JSON数据 JSON是前后端通信的交互格式,JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. JSON是互联网各个后台与 ...

  4. 使用ajax向后台发送数据

    第一种最原始的方式就是手动拼接json数组: var name="text"; $.ajax({ url:"". data:{'name':name} succ ...

  5. 创建下拉列表并通过ajax填充下拉数据

    $(document).ready(function(e) { jQuery.post('${basePath}/customerService/getCustomerService4List.do' ...

  6. django之ORM的查询优化、Ajax 06

    目录 ORM查询优化 only与defer select_related与prefetch_related查询优化 choices参数 MTV与MVC模型 Ajax简介 AJAX常见应用情景 AJAX ...

  7. django中的ajax组件

    目录 django中的ajax 向服务器发送请求的途径 Ajax的特点 基于jquery实现的ajax请求 利用ajax实现计算器 利用ajax实现登陆认证 利用form表单进行文件上传 利用ajax ...

  8. 根据Django后台的ajax大全

    一.什么是ajax 1.1 什么是JSON? AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语 ...

  9. Django进阶(路由系统、中间件、缓存、Cookie和Session、Ajax发送数据

    路由系统 1.每个路由规则对应一个view中的函数 url(r'^index/(\d*)', views.index), url(r'^manage/(?P<name>\w*)/(?P&l ...

随机推荐

  1. 【转帖】.NET的一点历史故事:作者的一些感想

    .NET的一点历史故事:作者的一些感想 https://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA==&mid=2654068684&idx=2&a ...

  2. mybatis-plus配置多数据源invalid bound statement (not found)

    mybatis-plus配置多数据源invalid bound statement (not found) 错误原因 引入mybatis-plus应该使用的依赖如下,而不是mybatis <de ...

  3. h5中的分组元素figure、figcaption、hgroup元素介绍

    分组元素用于对页面中的内容进行分组. figure元素和figcaption元素 figure元素用于定义独立的流内容(图像.图表.照片.代码等),一般指一个独立的单元.figure元素的内容应该与主 ...

  4. Django:登录、注册、退出

    创建项目: 一.创建项目 django-admin startproject form_test 二.创建应用 1.cd form_test 2.sudo ./manage.py startapp f ...

  5. Java EE javax.servlet中的RequestDispatcher接口

    RequestDispatcher接口 public interface RequestDispatcher 一.介绍 定义一个对象,从客户端接收请求并将其发送到服务器上的任何资源(例如servlet ...

  6. .NET CORE API 使用Postman中Post请求获取不到传参问题

    开发中遇到个坑 记录下. 使用Postman请求core api 接口时,按之前的使用方法(form-data , x-www-form-urlencoded)怎么设置都无法访问. 最后采用raw写入 ...

  7. Sublime Text 3配置浏览默认路径为localhost

    1.在 Sublime Text 3 中,安装 SideBarEnhancements 侧边栏增强插件.(注意:安装插件之前需要安装包管理工具,参考这里) 2.SideBarEnhancements ...

  8. 【原创】大叔经验分享(73)scala akka actor

    import java.util.concurrent.{ExecutorService, Executors, TimeUnit} import akka.actor.{Actor, ActorSy ...

  9. visual studio2015 搭建pro*c开发编译环境

    关于pro*c是什么,这里不做介绍,主要说明如何在vs2015里面开发pro*c程序,并编译exe执行文件 一.vs2015环境配置 1.新建一个空的vc++项目,如下图 2.右击项目属性,添加相关的 ...

  10. Html-自适应

    自适应 使网页能适应不同终端设备的技术.原理是通过检测视口分辨率来判断是什么终端的,PC,手机还是平板. 做自适应的网页时,需要在代码中加入“祖传代码”,即通用代码. 这是在头部head引入的: &l ...