一、什么是WSGI?
Nginx/Apacha :Web Server Web服务器
WSGI :Web Server Gateway Interface PythonWeb服务器网关接口(Python,缩写为WSGI)
PS:
It`s awful that my buddy couldn't distinguish WSGI from Web Server who has been a web developer for 3 years.
WEB框架的本质是一个socket服务端接收用户请求,加工数据返回给客户端(Django),但是Django没有自带socket需要使用 别人的 socket配合Django才能正常运行,socket有很多如下, 但是它们必须遵循一个规范 WSGI(web服务网关接口)这个所有socket都遵守的规范就是WSGI。
Django默认使用: Django框架中不包含socket,它默认使用第三方的wgiref socket(并发性能低 测试使用),也可以结合其他socket;
生产环境:uwsgi+Django
wsgiref +Django工作流程
1.socket 接受客户端请求 做http请求解析(分割请求头请求体)
2.wsgiref 把解析之后请求相关信息转发 给 Django
3.Django框架开始 中间件、路由系统、视图函数、ORM操作、模板渲染最终return字符串给socket
4.socket send (Django产出的字符串),返回客户端
Wsgi+Django from wsgiref.simple_server import make_server def RunServer(environ, start_response): Django框架开始 中间件 路由系统 视图函数 。。。。。 start_response('200 OK', [('Content-Type', 'text/html')]) return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ] if __name__ == '__main__': httpd = make_server('127.0.0.1', 8000, RunServer) httpd.serve_forever()
二、MVC/MTV是什么?
是不有人经常在你面前 装B的提起 MVC 和MTV?
说白了就是做功能模块的划分,把不同的代码放到不同的文件。
MVC
models(数据库,模型)
views(html模板)
controllers(业务逻辑处理) --> MVC
MTV
models(数据库,模型)
templates(html模板)
views(业务逻辑处理) --> MTV (Django属于 MTV)