关于Django的服务器和协议
1.django的生命周期
1.uWsgi服务器通过WSGI协议,将HTTPRequest请求交给WEB框架*Django/Flask*
2.request中间件对请求对象经过校验或者添加数据,*csrf/request.session*,
如果request请求通不过校验的话,直接将请求传递给respose中间件
3.通过url路由分发传输到urls.py中对路由控制是匹配正则表达式
4.根据浏览器发送的url根据视图中间件的匹配规则去匹配不同的视图函数或者视图类。
如果没有找到相对应的视图函数就返回response
5.在Views视图函数或者视图类中进行业务逻辑处理,处理完成之后返回到response中间件
6.Models模型类 数据库的orm对象关系映射获取数据库数据,并且返回序列化json或者渲染好的templates到response中间件
7.所有最后离开的响应都会到达response中间件,对响应的数据进行处理。返回给HttpResponse的wsgi
8.wsgi经过uWsgi服务器,将响应的内容发送给浏览器。
2.django生命周期流程走向
uwsgi***wsgi -----> HttpRequest------>Web框架
request中间件 ------- > 校验请求对象/添加数据
url -------- > urls.py文件 ----- > 根据浏览器的url --------> 通过视图中间件来匹配视图函数 ---------> response中间件
views视图中处理完相关业务 -------- > request中间件
models模板 数据库 -------- >ORM对象关系映射 ---------> 返回json/渲染完成的template到response中间件
所有离开的响应到达response中间件 ----------------> HttpResponse/wsgi
wsgi经过uWsgi服务器,将响应的内容发送给浏览器
3.什么是WSGI?
python web gateway interface web服务器网关接口是python定义的web应用程序和框架之间的一种简单而通用的接口。他是python为了解决web服务器与客户端之间的通信问题而产生的。他是基于现存的CGI标准而设计的。它定义了web服务器如何与python程序进行交互,让python写的web应用程序可以和web服务器进行对接起来。
4.uwsgi和uWsgi以及Wsgi和Nginx的区别
uwsgi是uWsgi服务器实现独有的协议,用于Nginx服务与uWsgi的通信规范
uWsgi是一个web服务器,实现了uwsgi/WSGI/HTTP的协议,用来接收Nginx转发的动态请求,处理后发个python应用程序
wsgi就是一个协议实现浏览器和客户端之间的通信,用在web框架*django/flask*编写的应用程序和web服务器之间的规范
5.Django的HttpRequest请求是在什么时候创建的?
Django框架在接收到http请求之后会根据http请求携带的参数以及报文信息创建一个WSGIRequest对象,
并且作为视图函数第一个参数传给视图函数,也就是我们所说的request参数,在这个对象上我们可以找到客户端传来的所有信息
6.中间件的简介以及作用
middleware 中间件是一个用来处理django框架的请求响应钩子,
它是一个轻量级的低级别的插件系统,用于在全局范围内改变django的输入输出,
每个中间组件都会负责有特定的功能。
7.列举django中间件的五个方法
以及django中间件的应用场景
请求 process_request 请求进来时,权限认证
视图函数 process_view 路由匹配之后的视图函数
模板 process_templates_response process 模板渲染时执行
异常 process_exception 异常时执行
响应 process_response 请求有响应式执行