基于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文件
相关文章
|
9月前
|
开发框架 前端开发 Go
【GoGin】(0)基于Go的WEB开发框架,GO Gin是什么?怎么启动?本文给你答案
Gin:Go语言编写的Web框架,以更好的性能实现类似Martini框架的APInet/http、Beego:开源的高性能Go语言Web框架、Iris:最快的Go语言Web框架,完备的MVC支持。
688 1
|
开发框架 JSON 中间件
Go语言Web开发框架实践:路由、中间件、参数校验
Gin框架以其极简风格、强大路由管理、灵活中间件机制及参数绑定校验系统著称。本文详解其核心功能:1) 路由管理,支持分组与路径参数;2) 中间件机制,实现全局与局部控制;3) 参数绑定,涵盖多种来源;4) 结构体绑定与字段校验,确保数据合法性;5) 自定义校验器扩展功能;6) 统一错误处理提升用户体验。Gin以清晰模块化、流程可控及自动化校验等优势,成为开发者的优选工具。
|
开发框架 安全 前端开发
Go Web开发框架实践:模板渲染与静态资源服务
Gin 是一个功能强大的 Go Web 框架,不仅适用于构建 API 服务,还支持 HTML 模板渲染和静态资源托管。它可以帮助开发者快速搭建中小型网站,并提供灵活的模板语法、自定义函数、静态文件映射等功能,同时兼容 Go 的 html/template 引擎,具备高效且安全的页面渲染能力。
|
人工智能 自然语言处理 JavaScript
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
Magnitude是一个基于视觉AI代理的开源端到端测试框架,通过自然语言构建测试用例,结合推理代理和视觉代理实现智能化的Web应用测试,支持本地运行和CI/CD集成。
2595 15
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
|
开发框架 JSON 中间件
Go语言Web开发框架实践:使用 Gin 快速构建 Web 服务
Gin 是一个高效、轻量级的 Go 语言 Web 框架,支持中间件机制,非常适合开发 RESTful API。本文从安装到进阶技巧全面解析 Gin 的使用:快速入门示例(Hello Gin)、定义 RESTful 用户服务(增删改查接口实现),以及推荐实践如参数校验、中间件和路由分组等。通过对比标准库 `net/http`,Gin 提供更简洁灵活的开发体验。此外,还推荐了 GORM、Viper、Zap 等配合使用的工具库,助力高效开发。
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
1148 157
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
574 2
|
中间件 Go API
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
1887 1
|
SQL 安全 PHP
探索PHP的现代演进:从Web开发到框架创新
PHP是一种流行的服务器端脚本语言,自诞生以来在Web开发领域占据重要地位。从简单的网页脚本到支持面向对象编程的现代语言,PHP经历了多次重大更新。本文探讨PHP的现代演进历程,重点介绍其在Web开发中的应用及框架创新,如Laravel、Symfony等。这些框架不仅简化了开发流程,还提高了开发效率和安全性。
206 3
|
前端开发 JavaScript 开发工具
从框架到现代Web开发实践
从框架到现代Web开发实践
275 1

热门文章

最新文章