Django框架
1. Django ORM查询中select_related和prefetch_related的区别??
def select_related(self, *fields)
    性能相关:表之间进行join连表操作,一次性获取关联的数据。

    总结:
    1. select_related主要针一对一和多对一关系进行优化。
    2. select_related使用SQL的JOIN语句进行优化,通过减少SQL查询的次数来进行优化、提高性能。

def prefetch_related(self, *lookups)
    性能相关:多表连表操作时速度会慢,使用其执行多次SQL查询在Python代码中实现连表操作。

    总结:
    1. 对于多对多字段(ManyToManyField)和一对多字段,可以使用prefetch_related()来进行优化。
    2. prefetch_related()的优化方式是分别查询每个表,然后用Python处理他们之间的关系。
2. Django ORM是什么?
对象关系映射,通过models中的类来对应数据库中的一个表,一个对象对应一个数据行,一个属性对应数据库中的一个字段

对象关系映射

3. Django创建项目的命令?

django-admin startproject 项目名称
python manage.py startapp 应用 app 名

4. Django 创建项目后,项目文件夹下的组成部分(对mvt 的理解)?

项目文件夹下的组成部分:
manage.py 是项目运行的入口,指定配置文件路径。
与项目同名的目录,包含项目的配置文件。
__init__.py 是一个空文件,作用是这个目录可以被当作包使用,也可以做一些初始化操作。
settings.py 是项目的整体配置文件。
urls.py 是项目的 URL 配置文件。
wsgi.py 是项目与 WSGI 兼容的 Web 服务器。

5. 对 MVC,MVT解读的理解?

M:Model,模型,和数据库进行交互
V:View,视图,负责产生Html页面
C:Controller,控制器,接收请求,进行处理,与M和V进行交互,返回应答。


1、 用户点击注按钮,将要注册的信息发送给网站服务器。
2、 Controller控制器接收到用户的注册信息,Controller会告诉Model层将用户的注册信息保存到数据库
3、 Model层将用户的注册信息保存到数据库
4、 数据保存之后将保存的结果返回给Model模型,
5、 Model层将保存的结果返回给Controller控制器。
6、 Controller控制器收到保存的结果之后,或告诉View视图,view视图产生一个html页面。
7、 View将产生的Html页面的内容给了Controller控制器。
8、 Controller将Html页面的内容返回给浏览器。
9、 浏览器接受到服务器Controller返回的Html页面进行解析展示。
M:Model,模型,和MVC中的M功能相同,和数据库进行交互。
V:view,视图,和MVC中的C功能相同,接收请求,进行处理,与M和T进行交互,返回应答。
T:Template,模板,和MVC中的V功能相同,产生Html页面

1、 用户点击注册按钮,将要注册的内容发送给网站的服务器。
2、 View视图,接收到用户发来的注册数据,View告诉Model将用户的注册信息保存进数据库。
3、 Model层将用户的注册信息保存到数据库中。
4、 数据库将保存的结果返回给Model
5、 Model将保存的结果给View视图。
6、 View视图告诉Template模板去产生一个Html页面。
7、 Template生成html内容返回给View视图。
8、 View将html页面内容返回给浏览器。
9、 浏览器拿到view返回的html页面内容进行解析,展示。

6. Django中models利用ORM对Mysql进行查表的语句(多个语句)?

字段查询
all():返回模型类对应表格中的所有数据。
get():返回表格中满足条件的一条数据,如果查到多条数据,则抛异常:MultipleObjectsReturned,
查询不到数据,则抛异常:DoesNotExist。
filter():参数写查询条件,返回满足条件 QuerySet 集合数据。
条件格式:
模型类属性名__条件名=值
注意:此处是模型类属性名,不是表中的字段名
关于 filter 具体案例如下:
判等 exact。

 BookInfo.object.filter(id=1) 
 BookInfo.object.filter(id__exact=1)此处的__exact 可以省略 

模糊查询 like
例:查询书名包含’传’的图书。contains

1. contains BookInfo.objects.filter(btitle__contains=’传’) 

空查询 where 字段名 isnull

1. BookInfo.objects.filter(btitle__isnull=False) 

范围查询 where id in (1,3,5)

1. BookInfo.objects.filter(id__in=[1,3,5]) 

比较查询 gt lt(less than) gte(equal) lte

1. BookInfo.objects.filter(id__gte=3) 

日期查询

1. BookInfo.objects.filter(bpub_date__year = 1980)  
2. BookInfo.objects.filter(bpub_date__gt = date(1980,1,1)) 

exclude:返回不满足条件的数据。

3. BookInfo.objects.exclude(id=3) 

F 对象
作用:用于类属性之间的比较条件。

1. from django.db.models import F 
2. 例:where bread > bcomment BookInfo.objects.filter(bread__gt =F(‘bcomment’)) 
3. 例:BookInfo.objects.filter(bread__gt=F(‘bcomment’)*2) 

Q 对象
作用:用于查询时的逻辑条件。可以对 Q 对象进行&|~操作。

1. from django.db.models import Q  
2. BookInfo.objects.filter(id__gt=3, bread__gt=30) 
3. BooInfo.objects.filter(Q(id__gt=3) & Q(bread__gt=3)) 
4. 例:BookInfo.objects.filter(Q(id__gt=3) | Q(bread__gt=30)) 
5. 例:BookInfo.objects.filter(~Q(id=3)) 

order_by 返回 QuerySet
作用:对查询结果进行排序。

1. 例: BookInfo.objects.all().order_by('id') 
2. 例: BookInfo.objects.all().order_by('-id') 
3. 例:BookInfo.objects.filter(id__gt=3).order_by('-bread') 

聚合函数
作用:对查询结果进行聚合操作。

1. sum count max min avg 

aggregate:调用这个函数来使用聚合。

1. from django.db.models import Sum,Count,Max,Min,Avg 
2. 例:BookInfo.objects.aggregate(Count('id')) 

{‘id__count’: 5} 注意返回值类型及键名

1. 例:BookInfo.objects.aggregate(Sum(‘bread’)) 

{‘bread__sum’:120} 注意返回值类型及键名
count 函数
作用:统计满足条件数据的数目。
例:统计所有图书的数目。

1. BookInfo.objects.all().count() 

例:统计 id 大于 3 的所有图书的数目。

1. BookInfo.objects.filter(id__gt = 3).count() 
模型类关系

一对多关系
例:图书类-英雄类
models.ForeignKey() 定义在多的类中。
2)多对多关系
例:新闻类-新闻类型类
models.ManyToManyField() 定义在哪个类中都可以。
3)一对一关系
例:员工基本信息类-员工详细信息类
models.OneToOneField() 定义在哪个类中都可以。

7. django中间件的使用?

联系管理员微信tutu19192010,注册账号

上一篇
下一篇
Copyright © 2022 Egon的技术星球 egonlin.com 版权所有 帮助IT小伙伴学到真正的技术