基于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文件
相关文章
|
3月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
66 2
|
3月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
158 62
|
3月前
|
中间件 Go API
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
228 1
|
3月前
|
前端开发 JavaScript 开发工具
从框架到现代Web开发实践
从框架到现代Web开发实践
70 1
|
3月前
|
SQL 安全 PHP
探索PHP的现代演进:从Web开发到框架创新
PHP是一种流行的服务器端脚本语言,自诞生以来在Web开发领域占据重要地位。从简单的网页脚本到支持面向对象编程的现代语言,PHP经历了多次重大更新。本文探讨PHP的现代演进历程,重点介绍其在Web开发中的应用及框架创新,如Laravel、Symfony等。这些框架不仅简化了开发流程,还提高了开发效率和安全性。
49 3
|
3月前
|
SQL 安全 PHP
探索PHP的现代演进:从Web开发到框架创新
PHP 自发布以来一直在 Web 开发领域占据重要地位,历经多次重大更新,从简单的脚本语言进化为支持面向对象编程的现代语言。本文探讨 PHP 的演进历程,重点介绍其在 Web 开发中的应用及框架创新。自 PHP 5.3 引入命名空间后,PHP 迈向了面向对象编程时代;PHP 7 通过优化内核大幅提升性能;PHP 8 更是带来了属性、刚性类型等新特性。
49 3
|
3月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
269 45
|
3月前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
112 2
|
4月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
79 4
|
4月前
|
前端开发 JavaScript UED
构建现代Web应用:使用React框架打造单页面应用
【10月更文挑战第9天】构建现代Web应用:使用React框架打造单页面应用

热门文章

最新文章

  • 1
    Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
    25
  • 2
    AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
    19
  • 3
    【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
    54
  • 4
    部署使用 CHAT-NEXT-WEB 基于 Deepseek
    338
  • 5
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 6
    java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
    40
  • 7
    零基础构建开源项目OpenIM桌面应用和pc web- Electron篇
    28
  • 8
    【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
    22
  • 9
    FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
    53
  • 10
    springSecurity学习之springSecurity过滤web请求
    60