Django框架基础知识点

本文详细介绍了Django框架的基础知识,包括项目创建、MVT模式、数据库操作、ORM使用、中间件、性能优化以及与uWSGI、Nginx的配合。同时,探讨了RESTful API设计、缓存机制、HTTP请求处理流程以及Cookie和Session的使用。还涉及了Django中的QuerySet方法、异常处理和日志管理等内容,是全面理解Django的实用指南。
摘要由CSDN通过智能技术生成

Django框架

1.Django创建项目的命令
django-admin startproject 项目名称
python manage.py startapp 应用app名

2.Django创建项目后,项目文件夹下的组成部分
此题考的是学员对MVT 的理解
项目文件夹下的组成部分:
manage.py 是项目运行的入口,指定配置文件路径。与项目同名的目录,包含项目的配置文件。
init.py 是一个空文件,作用是这个目录可以被当作包使用。
settings.py 是项目的整体配置文件。
urls.py 是项目的URL配置文件。
wsgi.py 是项目与 WSGI 兼容的 Web 服务器。
manage.py 是项目运行的入口,指定配置文件路径。与项目同名的目录,包含项目的配置文件。
init.py是一个空文件,作用是这个目录可以被当做包使用

3.对 MVC,MVT 解读的理解
MVC:
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 页面进行解析展示。

MVT:
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 页面内容进行解析,展示。

4.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
contains BookInfo.objects.filter(btitle contains=’传’)
空查询 where 字段名 isnull
BookInfo.objects.filter(btitle isnull=False)
范围查询 where id in (1,3,5)
BookInfo.objects.filter(id in=[1,3,5])
比较查询 gt lt(less than) gte(equal) lte
BookInfo.objects.filter(id gte=3)
日期查询
BookInfo.objects.filter(bpub_date year = 1980)
BookInfo.objects.filter(bpub_date gt = date(1980,1,1))
exclude:返回不满足条件的数据。
BookInfo.objects.exclude(id=3)
F 对 象
作用:用于类属性之间的比较条件。
from django.db.models import F
例:where bread > bcomment BookInfo.objects.filter(bread gt =F(‘bcomment’))
例:BookInfo.objects.filter(bread gt=F(‘bcomment’)*2)
Q 对 象
作用:用于查询时的逻辑条件。可以对 Q 对象进行&|~操作
from django.db.models import Q
BookInfo.objects.filter(id gt=3, bread gt=30)
BooInfo.objects.filter(Q(id gt=3) & Q(bread gt=3))
例 :BookInfo.objects.filter(Q(id gt=3) | Q(bread gt=30))
例:BookInfo.objects.filter(~Q(id=3))
order_by 返 回 QuerySet
作用:对查询结果进行排序。
例 : BookInfo.objects.all().order_by(‘id’)
例 : BookInfo.objects.all().order_by(’-id’)
例 :BookInfo.objects.filter(id gt=3).order_by(’-bread’)
聚合函数
作用:对查询结果进行聚合操作。
sum count max min avg
aggregate:调用这个函数来使用聚合。
from django.db.models import Sum,Count,Max,Min,Avg
例:BookInfo.objects.aggregate(Count(‘id’))
{‘id count’: 5} 注意返回值类型及键名
例:BookInfo.objects.aggregate(Sum(‘bread’))
{‘bread sum’:120} 注意返回值类型及键名
count 函 数
作用:统计满足条件数据的数目。例:统计所有图书的数目。
BookInfo.objects.all().count()
例:统计 id 大于 3 的所有图书的数目。
BookInfo.objects.filter(id gt = 3).count()
模型类关系
1)一对多关系
例:图书类-英雄类
models.ForeignKey() 定义在多的类中。
2)多对多关系
例:新闻类-新闻类型类
models.ManyToManyField() 定义在哪个类中都可以。
3)一对一关系
例:员工基本信息类-员工详细信息类
models.OneToOneField() 定义在哪个类中都可以。

5.django 中间件的使用
Django 在中间件中预置了六个方法,这六个方法的区别在于不同的阶段执行,对输入或输出进行干预,方法如下:
(1)初始化:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件。
def init ():
pass
(2)处理请求前:在每个请求上调用,返回 None 或 HttpResponse 对象。
def process_request(request):
pass
(3)处理视图前:在每个请求上调用,返回 None 或 HttpResponse 对象。
def process_view(request, view_func, view_args, view_kwargs):
pass
(4)处理模板响应前:在每个请求上调用,返回实现了 render 方法的响应对象。
def process_template_response(request, response):
pass
(5)处理响应后:所有响应返回浏览器之前被调用,在每个请求上调用,返回 HttpResponse 对象。
def process_response(request, response):
pass
(6)异常处理:当视图抛出异常时调用,在每个请求上调用,返回一个 HttpResponse 对象。
def process_exception(request,exception):
pass

6.谈一下你对 uWSGI 和 nginx 的理解?
(1 )uWSGI 是一个 Web 服务器,它实现了 WSGI 协议、uwsgi、http 等协议。Nginx 中HttpUwsgiModule 的作用是与 uWSGI 服务器进行交换。WSGI 是一种 Web 服务器网关接口。它是一个 Web 服务器(如 nginx,uWSGI 等服务器)与 web 应用(如用 Flask 框架写的程序)通信的一种规范。
要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。
WSGI 是一种通信协议。
uwsgi 是一种线路协议而不是通信协议,在此常用于在 uWSGI 服务器与其他网络服务器的数据通信。
uWSGI 是实现了 uwsgi 和 WSGI 两种协议的 Web 服务器。
(2)nginx 是一个开源的高性能的

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值