Ray I Can 不 看

What web_framework have done for us?

2018-03-18

framework

我在哪? 我在干什么?

1. Web work flow

上一篇文章中,我们知道web工作刘如下:

the web client <-> the web server <-> the socket <-> (uwsgi protocol)uWSGI(WSGI) <-> Python

并用例子说明了,application server(uWSGI)要做的事情: image_1c8pfcqt750j25vcogdo13c02g.png-43.8kB

  1. 从输入中获取数据构造env字典(handle_one_request, parse_request),里面一般包括:
    • PATH_INFO:
    • HTTP_HOST,
    • SERVER_PORT
    • REQUEST_METHOD
    • QUERY_STRING(GET),
    • CONTENT_LENGTH(POST),
    • wsgi.input(POST请求中,框架会从这个句柄中获取POST请求携带的data)
    • GET request

      image_1c8pei3921tgb1gc96pb771hei9.png-79.9kB

    • POST request

      image_1c8pept201b2b20eubas1g1f3km.png-66.8kB

  2. 根据application返回的output,构造http response
    • application先调用start_response构造response header image_1c8pfu82u15ucd651d38id289u3a.png-24kB
    • application server在把output,添加在后面,行成response image_1c8pfrupn16be48n1j0nho313bf2t.png-63kB

2. 框架做的事情

  1. URL mapping
    • 创建URL map

      image_1c8rqodng15rj1pmulrr1fmb1mto9.png-28.3kB

    • 添加路由

      image_1c8rqsq9tffji15tavv5asu4m.png-45.5kB

    • URL map详情

      image_1c8s2kpfq2c0mnsiajj5i1d5713.png-22.5kB image_1c8rr1rlr16m91vd1shg1f6k107g13.png-99.8kB

    • URL match

      image_1c8s2hb411lvn1c3b14ehh6514m4m.png-40.1kB

  2. Request and Response的封装
    • Request image_1c8rs9g1m1bsgiik635bep3vk9.png-69.5kB
    • Response image_1c8rsbtlb1i0v1mt7129ua8i1drtm.png-51kB
  3. template 引擎
    • 模板引擎:相当于构造了一个函数,输入是模板需要的变量,输出是html image_1c8rv999c1a24i7nm6q91d1se713.png-60.7kB
  4. 错误,异常处理
    • 设置错误处理函数 image_1c8rvocj2jpou8b6k51p3i18ll1t.png-70.3kB
    • 根据错误的不同,output显示不一样的信息:例如:500则显示traceback;其他显示有用的msg image_1c8rvncdf16q536a1pc31ehr1b7b1g.png-48kB

3. 框架还可以做的事情

  1. 安全支持:放CSRF, XSS, SQL\命令行注入
  2. session支持: token
  3. 权限管控: has_permission
  4. ORM支持
  5. admin后台管理

Similar Posts

Comments