django请求生命周期延伸出的知识点

本文深入探讨了HTTP协议的工作原理,包括其在C/S架构下的角色、请求与响应格式,以及HTTP的四大特性。同时,文章详细介绍了WSGI协议,包括其在web服务器与应用之间的协调作用,以及如何通过中间件增强功能。

 

由浏览器发起请求开始
知识点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协议其实是定义了一种server与application解耦的规范,我们django自带的wsgiref是对该协议的具体实现
此外还有很多其他实现该协议的服务器:
uwsgi:支持较高并发,django项目上线一般会选择用它替换django自带的wsgiref    == JAVA中的tomcat
wsgiref:支持并发不高,django自带

请求解析完成后依次通过Django中间件
知识点4:django中间件
django自带七大中间件:可以简单理解为django的门户,安全认证及全局处理都在这里面

[Python] 纯文本查看 复制代码

?

1

2

3

4

5

6

7

8

9

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中定义自己的中间件

[Python] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

# 导入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种方法分别是:

[Python] 纯文本查看 复制代码

?

1

2

3

4

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): #视图函数出错时执行


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

[Python] 纯文本查看 复制代码

?

1

2

3

4

5

6

7

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)

            ]


路由匹配成功,进入视图函数
路由层写法: 

[Python] 纯文本查看 复制代码

?

1

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


视图层写法:

[Python] 纯文本查看 复制代码

?

1

2

3

4

5

def text(request):

    if request.method == "POST":

        return HttpResponse("ok")

    elif request.method == "GET":

        return HttpResponse("ok")

分布式微服务企业级系统是一个基于Spring、SpringMVC、MyBatis和Dubbo等技术的分布式敏捷开发系统架构。该系统采用微服务架构和模块化设计,提供整套公共微服务模块,包括集中权限管理(支持单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等功能。系统支持服务治理、监控和追踪,确保高可用性和可扩展性,适用于中小型企业的J2EE企业级开发解决方案。 该系统使用Java作为主要编程语言,结合Spring框架实现依赖注入和事务管理,SpringMVC处理Web请求,MyBatis进行数据持久化操作,Dubbo实现分布式服务调用。架构模式包括微服务架构、分布式系统架构和模块化架构,设计模式应用了单例模式、工厂模式和观察者模式,以提高代码复用性和系统稳定性。 应用场景广泛,可用于企业信息化管理、电子商务平台、社交应用开发等领域,帮助开发者快速构建高效、安全的分布式系统。本资源包含完整的源码和详细论文,适合计算机科学或软件工程专业的毕业设计参考,提供实践案例和技术文档,助力学生和开发者深入理解微服务架构和分布式系统实现。 【版权说明】源码来源于网络,遵循原项目开源协议。付费内容为本人原创论文,包含技术分析和实现思路。仅供学习交流使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值