Django框架——前戏

软件开发架构

cs架构
bs架构
# 本质bs也是cs

纯手撸web框架

不足之处

1.代码重复(服务端代码所有人都要重复写)
2.手动处理http格式的数据 并且只能拿到url后缀 其他数据获取繁琐(数据格式一样处理的代码其实也大致一样 重复写)
3.并发的问题

借助于wsgiref模块

wsgiref模块
	1.请求来的时候解析http格式的数据 封装成大字典
	2.响应走的时候给数据打包成符合http格式 再返回给浏览器
from wsgiref.simple_server import make_server
from urls import urls
from views import *


def run(env, response):
    """
    env:请求相关的所有数据
    response:响应相关的所有数据
    return: 返回给浏览器的数据
    """
    print(env)  # 大字典  wsgiref模块处理好http格式的数据
    
    response('200 OK', [])  # 响应首行 响应头
    current_path = env.get('PATH_INFO')
    
    func = None
    for url in urls:  # url (),()
        if current_path == url[0]:
            func = url[1]
            break
            
    if func:
        res = func(env)
    else:
        res = error(env)
    return [res.encode('utf-8')]


if __name__ == '__main__':
    server = make_server('127.0.0.1',8080,run)
    server.serve_forever()

动静态网页

"""
静态网页
	页面上的数据是静态不变的
动态网页
	数据是实时获取的
"""

模版语法之Jinja2模块

pip3 install jinja2

{{ user }}
{{ user.get('username')}}
{{ user.age }}
{{ user['hobby'] }}

{% for user_dict in user_list %}
{% endfor%}

python三大主流web框架

django
	特点: 大而全 自带的功能特别特别特别的多 类似于航空母舰
	不足之处: 有时候过于笨重

flask
	特点: 小而精  自带的功能特别特别特别的少 类似于游骑兵
第三方的模块特别特别特别的多,如果将flask第三方的模块加起来完全可以盖过django
	      
	不足之处: 比较依赖于第三方的开发者
		
tornado
	特点:异步非阻塞 支持高并发
		牛逼到甚至可以开发游戏服务器


A:socket部分
B:路由与视图函数对应关系(路由匹配)
C:模版语法

django
  A用的是别人的		wsgiref模块
  B用的是自己的
  C用的是自己的       (没有jinja2好用 但是也很方便)

flask
  A用的是别人的		werkzeug(内部还是wsgiref模块)
  B用的是自己的
  C用的是别人的       (jinja2)

tornado
  A,B,C都是自己写的
posted @ 2020-05-23 08:13  pythoner_wl  阅读(124)  评论(0编辑  收藏  举报