一、wsgiref模块编写
- wsgiref模块.py
from wsgiref.simple_server import make_server
def index(env):
return 'hello index'
def login(env):
return 'hello login'
def error(env):
return '404 error'
# url与函数的对应关系
urls = [
('/index', index),
('/login', login),
('/error', error)
]
def run(env, response):
"""
:param env: 请求相关的所有数据
:param response: 响应相关的所有数据
:return: 返回给浏览器的数据
"""
print(env) # 大字典 wsgiref模块帮你处理好http格式的数据
current_path = env.get('PATH_INFO')
response('200 OK', []) # 相应首行, 响应头
# 定义一个变量 存储匹配到的函数名
func = None
for url in urls:
if current_path == url[0]:
# 将url对应的函数名给func
func = url[1]
break # 匹配到一个后应该立即结束for循环
# 判断for是否有值
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)
"""
会实时监控127.0.0.1:8080地址, 只要有客户端来了
都会交给run函数处理(加括号触发run函数的运行)
flask启动源码
make_server('127.0.0.1', 8080, obj)
会启动__call__
"""
server.serve_forever() # 启动服务端
- 优化就是将不同的功能拆开不同的py文件, 就已经有django的雏形了
二、模板语法jinja2
pip install janja2
'''
模板语法是在后端起作用的, 将处理好的模板给前端
'''
# 模板语法(类似于python)
{{user}}
{{user.get('username')}}
{{user.age}}
{{user['app']}}
三、自定义建议版本web框架流程图
# wsgires 模块
1、 请求来的时候解析http格式的数据, 封装成大字典
2、 响应走的时候给数据打包成符合http格式, 在返回给浏览器
- 流程图
相关连接(笔记来自于视频课程的归类整理):
[1]: https://www.bilibili.com/video/BV1QE41147hU?p=17
[2]: https://www.cnblogs.com/Dominic-Ji/p/11093137.html
[3]: https://zhuanlan.zhihu.com/p/114200361