参考链接: https://blog.csdn.net/secretx/article/details/43964607 在数据库有外键的时候,使用select_related()和prefech_related()可以很好地减少数据库请求的次数, 从而提高性能 假定一个个人信息系统,需要记录系统中各个人的故乡,居住地,以及到过的城市,数据库设计如下: from django.db import models class Province(models.Model): name = models…
对于多对多字段(ManyToManyField)和一对多字段, 可以使用prefetch_related()来进行优化 prefetch_related()和select_related()的设计目的很相似,都是为了减少SQL查询的数量,但是实现的方式不一样.后者是通过JOIN语句,在SQL查询内解决问题.但是对于多对多关系,使用SQL语句解决就显得有些不太明智,因为JOIN得到的表将会很长,会导致SQL语句运行时间的增加和内存占用的增加.若有n个对象,每个对象的多对多字段对应Mi条,就会生成Σ…
在数据库有外键的时候,使用 select_related() 和 prefetch_related() 可以很好的减少数据库请求的次数,从而提高性能.本文通过一个简单的例子详解这两个函数的作用.虽然QuerySet的文档中已经详细说明了,但本文试图从QuerySet触发的SQL语句来分析工作方式,从而进一步了解Django具体的运作方式. 1. 实例的背景说明 假定一个个人信息系统,需要记录系统中各个人的故乡.居住地.以及到过的城市.数据库设计如下: Models.py 内容如下: from d…
  Django是一个基于Python的网站开发框架,一个很重要的特点就是Battery Included,简单来说就是包含了常规开发中所需要的一切东西,包括但不限于完整的ORM模型.中间件.会话处理.模板语言.路由映射.管理员站点等,大大提高了开发者的开发体验,今天要谈的东西便是属于Django ORM这块中查询集优化的内容. 在实际的开发中,模型之间经常存在复杂的关联关系.在数据量较大的情况下,默认的查询可能面临潜在的性能问题.今天我们就分享一下Django ORM的查询优化. 首先需要明确…
一.通常HTTP协议向服务器传参有几种途径 : 提取URL的特定部分,如/weather/shanghai/2018,可以在服务器端的路由中用正则表达式截取: 查询字符串(query string),形如key1=value1&key2=value2: 请求体(body)中发送的数据,比如表单数据.json.xml: 在http报文的头(header)中. 1.URL中参数的获取 在定义路由URL时,可以使用正则表达式提取参数的方法从URL中获取请求参数,Django会将提取的参数直接传递到视图…
F()允许Django在未实际链接数据的情况下具有对数据库字段的值的引用.通常情况下我们在更新数据时需要先从数据库里将原数据取出后方在内存里,然后编辑某些属性,最后提交.例如这样 # Tintin filed a news story! reporter = Reporters.objects.get(name='Tintin') reporter.stories_filed += 1 reporter.save()   上述代码中我们先将reporter.stories_filed的值从数据库…
静态文件引用优化 在html文件中是用django的静态文件路径时,一般会这么写: <script type="text/javascript" src="/static/js/jquery-2.1.4.min.js"></script> 但是如果修改了静态文件的目录名称之后,需要把所有有关的html文件路径全部修改一遍,这样会很不方便.于是,我们可以用另一种方法: 第一种方法: 1.Django1.9中在settings.py中的TEMPL…
Django前端界面实现级联查询 一.前端界面中 <span scope="col" colspan="6"> 院系:<select id="dept" name="deptid" class="select radius mr-10" style="width: 20%"> <option value="default" >请选择…
path( )作用:解析URL地址 path( ) 标准语法: (<>为必须的参数,[]为可选参数) path(<route>, <view>, [name=None,**kwargs])    下面就具体地址解释: https://i-beta.cnblogs.com/posts/edit route 表示路径,从端口以后的URL地址,到/结束   即 https://i-beta.cnblogs.com/之后的路径 从 urlpattern 的第一项开始,按顺序依次…
ORM:Object-Relation Mapping:对象-关系映射 在MVC框架中的Model模块中都包括ORM,对于开发人员主要带来了如下好处: 实现了数据模型与数据库的解耦,通过简单的配置就可以轻松更换数据库,而不需要修改代码. 只需要面向对象编程,不需要面向数据库编写代码. 在MVC中Model中定义的类,通过ORM与关系型数据库中的表对应,对象的属性体现对象间的关系,这种关系也被映射到数据表中. Django框架中ORM示意图如下: 在models中定义如下模型类:(各项配置已经部署…