django项目搭建见:

https://www.cnblogs.com/dongxixi/p/10981577.html

django请求生命周期图

由浏览器发起请求开始

知识点1:

浏览器与服务器软件架构:C/S架构

HTTP协议:又称超文本传输协议,它规定了浏览器与服务端数据传输的格式

HTTP协议四大特性:

    基于TCP/IP作用于应用层的协议

    基于请求响应

    无状态

    无连接

知识点2:

请求格式及响应格式:

  请求格式:

    请求首行

    请求头

    空行(\r\n)

    请求体

  响应格式:

    响应首行

    响应头

    空行

    响应体

wsgiref请求响应处理

知识点3:web服务网关协议

cgi:通用网关协议

wsgi协议:

  wsgi协议(Web Server Gateway Interface) 主要包含server和application两部分:

  • WSGI server负责从客户端接收请求,将request转发给application,将application返回的response返回给客户端;
  • WSGI application接收由server转发的request,处理请求,并将处理结果返回给server。application中可以包括多个栈式的中间件(middlewares),这些中间件需要同时实现server与application,因此可以在WSGI服务器与WSGI应用之间起调节作用:对服务器来说,中间件扮演应用程序(执行程序),对应用程序来说,中间件扮演服务器(WSGI服务器)。

WSGI协议其实是定义了一种serverapplication解耦的规范,我们django自带的wsgiref是对该协议的具体实现

此外还有很多其他实现该协议的服务器:

uwsgi:支持较高并发,django项目上线一般会选择用它替换django自带的wsgiref    == JAVA中的tomcat

wsgiref:支持并发不高,django自带

请求解析完成后依次通过Django中间件

知识点4:django中间件

django自带七大中间件:可以简单理解为django的门户,安全认证及全局处理都在这里面

MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

除了django自带的中间件以外我们还可以自定义中间件实现一些全局的校验和配置

方法:在应用下新建文件夹,名字自取,文件夹下新建任意py文件,名字自取,接下来就可以在py中定义自己的中间件l

# 导入MiddlewareMixin模块
from django.utils.deprecation import MiddlewareMixin #定义中间件的类,它继承MiddlewareMixin
class Md1(MiddlewareMixin):
def process_request(self, request):
print('Md1里面的process_request') class Md2(MiddlewareMixin):
def process_request(self, request):
print('Md2里面的process_request')

django暴露给开发者5种方法分别是:

process_request(self, request):   #请求来的时候执行
process_response(self, request, response): #响应返回时执行
process_template_response(self, request, response): #视图函数执行完了执行
process_view(self, request, view_func, view_args, view_kwargs): #路由匹配成功后视图函数执行前执行
process_exception(self, request, exception): #视图函数出错时执行

中间件具体作用及执行流程详见:https://www.cnblogs.com/dongxixi/p/11048901.html

接下来进入urls.py,路由匹配

知识点5:路由系统

    urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$',views.home),
url(r'^test/$',views.test),
url(r'^testadd/$',views.testadd),
url(r'',views.error)
]

①路由正则匹配

②无名分组

③有名分组

④反向解析

⑤路由分发

路由系统详见:https://www.cnblogs.com/dongxixi/p/11001722.html

路由匹配成功,进入视图函数

知识点6:CBV/FBV

FBV:

  路由层写法: 

   url(r'^test/$',views.test),

  视图层写法:

def text(request):
if request.method == "POST":
return HttpResponse("ok")
elif request.method == "GET":
return HttpResponse("ok")

CBV:

  路由层写法:

 url(r'^test/$',views.Text.as_view()),

  视图层写法:

from django.views import View
class Text(View):
def get(self,request):
return HttpResponse("ok")
def post(self,request):
return HttpResponse("ok")

三板斧及jsonresponse

from django.shortcuts import render,redirect,HttpResponse
from django.http import JsonResponse

CBV源码剖析见:

视图函数处理数据,进行django模板渲染

知识点7:django模板层

①过滤器

②标签

③自定义过滤器、标签、inclusion_tag

④模板继承与导入

⑤静态文件配置

详见:

模板层:https://www.cnblogs.com/dongxixi/p/11013803.html

补充:https://www.cnblogs.com/dongxixi/p/11007339.html

知识点8:cookie与session

①cookie基本使用

②session原理及使用

③auth模块

④自定义User表

cookie与session使用见:https://www.cnblogs.com/dongxixi/p/11048974.html

auth模块及自定义User表使用见:https://www.cnblogs.com/dongxixi/p/11055516.html

知识点9:form认证组件

①form组件使用

②form组件进阶

③分页器

form组件:https://www.cnblogs.com/dongxixi/p/11042917.html

form组件进阶:https://www.cnblogs.com/dongxixi/p/11043435.html

分页器:https://www.cnblogs.com/dongxixi/p/11042854.html

知识点10:django数据库操作:

①一对一、一对多、多对多表分析及创建

②多对多表三种创建方式

③django ORM增删改查、单表操作、多表操作

④F、Q查询

⑤ORM类、字段基础

⑥事务、批量插入、查询优化

表关系:https://www.cnblogs.com/dongxixi/p/10862974.html

多对多表三种创建方式:https://www.cnblogs.com/dongxixi/p/11042883.html

ORM增删改查:https://www.cnblogs.com/dongxixi/p/11013783.html

F、Q查询:https://www.cnblogs.com/dongxixi/p/11042869.html

ORM基础:https://www.cnblogs.com/dongxixi/p/11050753.html

django-model进阶:https://www.cnblogs.com/liuqingzheng/articles/9805991.html

知识点11:

未完待续...

由django请求生命周期延伸出的知识点大总结的更多相关文章

  1. django请求生命周期,FBV和CBV,ORM拾遗,Git

    一.django 请求生命周期 流程图: 1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post, ...

  2. python 全栈开发,Day84(django请求生命周期,FBV和CBV,ORM拾遗,Git)

    一.django 请求生命周期 流程图: 1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post, ...

  3. Django组件 - Django请求生命周期、中间件

    一.Django请求生命周期 在学习中间件之前,先了解一下Django的请求生命周期,如下图: 1)client代表浏览器,浏览器内部为我们封装了socket,Django的WSGI模块也封装了soc ...

  4. Django框架10 /sweetalert插件、django事务和锁、中间件、django请求生命周期

    Django框架10 /sweetalert插件.django事务和锁.中间件.django请求生命周期 目录 Django框架10 /sweetalert插件.django事务和锁.中间件.djan ...

  5. [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]

    [Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...

  6. Django(35)Django请求生命周期分析(超详细)

    Django请求生命周期分析 1.客户端发送请求 在浏览器输入url地址,例如www.baidu.com,浏览器会自动补全协议(http),变为http://www.baidu.com,现在部分网站都 ...

  7. Django请求生命周期之响应内容

    Django请求生命周期: 1.发送http请求2.服务器接受,根据请求头中的url在路由关系表中进行匹配(从上到下)3.匹配成功后,执行指定的views函数 URL -> 函数 ==>F ...

  8. Django 请求生命周期【图示】

    Django 请求生命周期

  9. Django框架深入了解_01(Django请求生命周期、开发模式、cbv源码分析、restful规范、跨域、drf的安装及源码初识)

    一.Django请求生命周期: 前端发出请求到后端,通过Django处理.响应返回给前端相关结果的过程 先进入实现了wsgi协议的web服务器--->进入django中间件--->路由f分 ...

随机推荐

  1. 将您的Cordova应用程序打包

    参考 https://github.com/MicrosoftDocs/cordova-docs/blob/master/articles/tutorial-package-publish/tutor ...

  2. Docker container 集装箱说明

    容器操作 使用 docker 命令行操作 docker 容器 启动容器 core@localhost ~ $ docker run Usage: docker run [OPTIONS] IMAGE ...

  3. twemproxy架构分析——剖析twemproxy代码前编

    twemproxy背景 在业务量剧增的今天,单台高速缓存服务器已经无法满足业务的需求, 而相较于大容量SSD数据存储方案,缓存具备速度和成本优势,但也存在数据安全性的挑战.为此搭建一个高速缓存服务器集 ...

  4. 人工模拟获取latch

    人工模拟获取latch 任意地dump一latches结构文件: SQL> oradebug dump latches 10 ORA-00074: no process has been spe ...

  5. 联合概率(joint probability)、分布函数(distribution function)

    0. PMF 与 PDF 的记号 PMF:PX(x) PDF:fX(x) 1. 联合概率 联合概率:是指两个事件同时发生的概率. P(A,B)=P(B|A)⋅P(A)⇒P(B|A)=P(A,B)P(A ...

  6. 简明Python3教程 16.标准库

    简介 python标准库作为python标准安装的一部分,其自身包含数量庞大的实用模块, 因此熟悉python标准库非常重要,因为很多问题都能利用python标准库快速解决. 下面我们将研究标准库中的 ...

  7. Delphi内存管理(Integer、Boolean、Record、枚举等都是在作用域内编译器自动申请内存,出了作用域自动释放;另外,字符串、Variant、动态数组、接口也是由Delphi自动管理)

    一.什么是堆.栈? 程序需要的内存空间分为 heap(堆) 和 stack(栈),heap 是自由存储区, stack 是自动存储区,使用 heap 需要手动申请.手动释放, stack 是自动申请. ...

  8. 百度地图API二:根据标注点坐标范围计算显示缩放级别zoom自适应显示地图

    原文:百度地图API二:根据标注点坐标范围计算显示缩放级别zoom自适应显示地图 版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/liusaint1992/ ...

  9. BIOS 选项设置的含义

    SATA Mode Section: ADHI: Advanced Host Controller Interface - this is a hardware mechanism that allo ...

  10. WPF Binding妙处-既无Path也无Source

    <Window x:Class="XamlTest.Window12"        xmlns="http://schemas.microsoft.com/win ...