60、wsgiref手写web框架+jinja2模块初识

本文介绍了使用wsgiref模块创建简单Web框架的基本流程,包括解析HTTP请求、定义URL路由和处理函数。同时,讲解了Jinja2模板语法在后端如何工作,用于生成动态HTML内容。通过示例代码展示了如何组织和优化框架结构,为实现更复杂的Web应用打下基础。此外,提到了流程图帮助理解整个框架的工作原理。
摘要由CSDN通过智能技术生成

一、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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值