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 @   pythoner_wl  阅读(129)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示