django 之 Django请求生命周期

写在前沿:

  django 是用来开发web框架,直接利用框架里的方法,在框架的基础上实现功能。
  django目录下:
    settings.py 存放配置文件
    urls.py 用于构建路由系统
    wsgi.py django 叫web服务网关接口,也是一个协议,调用python内置的wsgiref模块,实现socket。本质上代指的就是socket。
    manage.py 用于框架的管理。

  1. Http协议特点:无状态,短连接
  2. 浏览器与网站之间的通信,实质上是基于socket来实现的:浏览器是<socket客户端>,网站是<socket服务端>,
  3. 如果我们自己搭建一个网站,那以下三大部分是必不可少的:
    a. socket服务端:既然是基于socket实现通信,那浏览器充当客户端,但服务端还是需要我们来搭建。
    b. 路由系统:根据URL不同返回不同的内容         URL -> 函数
    c. 数据以字符串形式返回给用户
      这里边就涉及到模板引擎渲染的问题:
        HTML充当模板(特殊字符)
        自己创造任意数据以字符串的形式传递给模版,
        模版渲染之后发送给浏览器显示。
  4. 手动编写Web框架那工程量就太大,所以我们可以借用别人写好的web框架来实现我们需要的功能。
    不管是哪种框架都必须以上边三个条件来实现。  

  框架种类:

    - a,b,c 三个方法都有 --> Tornado 框架内部已封装了三种操作
    - [第三方a],b,c(缺少其中一个) --> wsgiref -> Django 框架以第三方通信协议来实现socket通信,其他两块内部已封装好操作。
    - [第三方a],b,[第三方c] --> flask, 框架使用第三方的socket通信和模版渲染规则,自己内部封装了路由系统的操作。
  分类:
    - Django框架(Web。。。。。。)
    - 其他

 MVC和MTV普及

  models(数据库,模型) views(html模板) controllers(业务逻辑处理) --> MVC
  models(数据库,模型) templates(html模板) views(业务逻辑处理) --> MTV
  Django -> MTV

什么是web框架

  框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演。

web应用 访问请求流程

 

Django请求生命周期

  web框架本质:socket
  作为web框架种的一种,django是以第三方通信协议来实现socket通信,本身没有封装socket方法。同时django自己内部又是默认以wsgi用于socket通信。因此django的请求生命周期可以认为有两大类来实现。(wsgi性能太低,仅用于测试,一般都是使用uwsgi)
  - wsgi+django(web框架) --> 框架内部又可以分为:中间件,路由系统,视图函数,数据库操作,模版渲染,等

  明确一点:可以实现socket通信的协议真心有很多……
    'cgi': CGIServer,
    'flup': FlupFCGIServer,
    'wsgiref': WSGIRefServer,
    'waitress': WaitressServer,
    'cherrypy': CherryPyServer,
    'paste': PasteServer,
    'fapws3': FapwsServer,
    'tornado': TornadoServer,
    'gae': AppEngineServer,
    'twisted': TwistedServer,
    'diesel': DieselServer,
    'meinheld': MeinheldServer,
    'gunicorn': GunicornServer,
    'eventlet': EventletServer,
    'gevent': GeventServer,
    'geventSocketIO':GeventSocketIOServer,
    'rocket': RocketServer,
    'bjoern' : BjoernServer,
    'auto': AutoServer,

- 基本操作举例: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()

 

 

大神手笔----> Django运行方式及处理流程总结

 

posted @ 2017-07-04 18:27  细雨蓝枫  阅读(287)  评论(0编辑  收藏  举报