基于wsgiref模块写的web框架

简介: 基于wsgiref模块写的web框架

基于wsgiref Web框架


from wsgiref.simple_server import make_server
from urls import urls
from views import *
def run(env, response):
    '''
    :param env: 请求相关的所有数据类型
    :param response: 相应相关的数据类型
    :return: 返回给浏览器的数据
    '''
    # print(env)  # env 是一个大字典,wsgiref模块将http格式的数据转化成大字典
    response('200 OK',[])
    current_path = env.get('PATH_INFO')
    func = None
    for url in urls:
        if current_path == url[0]:
            func = url[1]
            break  # 匹配到一个后应该立刻结束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()'触法run函数的运行)
        flask启动源码
           make_server('127.0.0.1',8080,obj) 
           也会自动给obj加括号
                __call__
    '''
    server.serve_forever()  # 启动服务器


urls 文件


from views import *
# url与函数的对应关系
urls = [
    ('/index', index),
    ('/login', login),
    ('/xxx', xxx),
    ('/get_time', get_time),
    ('/get_dict', get_dict)
]


views 文件


def index(env):
    return 'index'
def login(env):
    return 'login'
def error(env):
    return '404'
def xxx(env):
    with open(r'templates/02myxx.html', 'r', encoding='utf-8')as f:
        return f.read()
import datetime
def get_time(env):
    current_time = datetime.datetime.now().strftime('%Y-%m-%d-%X')
    #
    with open(r'templates/03mytime.html', 'r',encoding='utf-8')as f:
        data = f.read()
        # data就是一串字符串
    data = data.replace('dddd', current_time)
    return data
'''
    jinja2
'''
from  jinja2 import Template
def  get_dict(env):
    user_dict = {'username':'jason','age':18,'hobby':'read'}
    with open('templates/04get_dict.html', 'r',encoding='utf-8')as f:
        data = f.read()
    tmp = Template(data)
    res = tmp.render(user =user_dict)
    # 给get_dict.html 传递一个值,也页面上通过变量名user就能够拿到user_dict
    return res
import pymysql
def get_user(env):
    coon = pymysql.connect(
        host = '127.0.0.1',
        port = 3306,
        user = 'root',
        password = '2802017872liu',
        db = 'day59',
        charset = 'utf8',
        autoicommit = True
    )
    cursor = coon.cursor(cursor=pymysql.cursors.DictCursor)
    sql = 'select * from userinfo'
    affect_rows = cursor.execute(sql)
    dat_list = cursor.fetchall()
    # 将获取到的数据传输给HTML文件
相关文章
|
1月前
|
安全 数据库 开发者
Python Web框架简介
【2月更文挑战第10天】Python Web框架简介。
90 2
|
10天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【4月更文挑战第9天】本文对比了Python三大Web框架Django、Flask和Pyramid。Django功能全面,适合快速开发,但学习曲线较陡;Flask轻量灵活,易于入门,但默认配置简单,需自行添加功能;Pyramid兼顾灵活性和可扩展性,适合不同规模项目,但社区及资源相对较少。选择框架应考虑项目需求和开发者偏好。
|
4天前
|
前端开发 数据挖掘 API
使用Python中的Flask框架进行Web应用开发
【4月更文挑战第15天】在Python的Web开发领域,Flask是一个备受欢迎的轻量级Web框架。它简洁、灵活且易于扩展,使得开发者能够快速地构建出高质量的Web应用。本文将深入探讨Flask框架的核心特性、使用方法以及在实际开发中的应用。
|
16天前
|
前端开发 安全 Java
使用Java Web框架:Spring MVC的全面指南
【4月更文挑战第3天】Spring MVC是Spring框架的一部分,用于构建高效、模块化的Web应用。它基于MVC模式,支持多种视图技术。核心概念包括DispatcherServlet(前端控制器)、HandlerMapping(请求映射)、Controller(处理请求)、ViewResolver(视图解析)和ModelAndView(模型和视图容器)。开发流程涉及配置DispatcherServlet、定义Controller、创建View、处理数据、绑定模型和异常处理。
使用Java Web框架:Spring MVC的全面指南
|
30天前
|
数据库
最全三大框架整合(使用映射)——struts.xml和web.xml配置
最全三大框架整合(使用映射)——数据库资源文件jdbc.properties
9 0
|
30天前
|
前端开发 JavaScript 安全
深入探索 Qt6 web模块 WebEngineCore:从基础原理到高级应用与技巧
深入探索 Qt6 web模块 WebEngineCore:从基础原理到高级应用与技巧
71 0
|
1月前
|
前端开发 API 网络架构
Python 如何开发出RESTful Web接口,DRF框架助力灵活实现!
Python 如何开发出RESTful Web接口,DRF框架助力灵活实现!
|
1月前
|
XML JSON API
通过Flask框架创建灵活的、可扩展的Web Restful API服务
通过Flask框架创建灵活的、可扩展的Web Restful API服务
|
1月前
|
物联网 调度 开发者
构建高效Python Web应用:异步编程与Tornado框架解析
【2月更文挑战第27天】 在处理高并发的Web应用场景时,传统的同步阻塞模型往往难以满足性能需求。本文将深入探讨Python世界中的异步编程概念,并结合Tornado这一轻量级、非阻塞式Web服务器及框架,展示如何构建高性能的Web应用。通过实例驱动的方法论,我们将剖析Tornado的核心组件,包括其IOLoop、异步HTTP客户端和服务器端处理机制,以及与协程集成的细节。文章旨在为开发者提供一套实践指南,帮助他们利用Python实现快速响应和资源高效的Web服务。
28 2
|
1月前
|
设计模式 前端开发 API
简述 Python WEB 开发常用的框架有哪些?
【2月更文挑战第26天】【2月更文挑战第88篇】简述 Python WEB 开发常用的框架有哪些?