使用Python进行Web开发的15个框架指南

news2024/11/22 22:03:30

在这里插入图片描述

引言

在Python Web开发领域,有许多不同类型的框架可供选择,从轻量级到全功能型,再到专注于异步处理的框架。本文将介绍多个Python Web框架,帮助开发者根据具体需求选择合适的工具。

1.Flask:轻量级Web框架

  • Flask是一个用Python编写的轻量级Web应用框架。它简单易学,适合快速开发小到中型项目。
安装:
pip install flask  
示例:
from flask import Flask   
app = Flask(__name__)    
@app.route('/')  
def hello_world():  
return 'Hello, World!'    
if __name__ == '__main__':  
app.run(debug=True)  
解释:
  • from flask import Flask:导入Flask类。
  • app = Flask(__name__):创建Flask实例。
  • @app.route('/'):定义路由。
  • hello_world():视图函数。
  • app.run(debug=True):启动开发服务器。

2.Django:全能型Web框架

  • Django是全功能的Web框架,适用于开发大型项目。它提供了ORM、用户认证等内置功能。
安装:
pip install django  
示例:
# settings.py  
INSTALLED_APPS = [  
'django.contrib.admin',  
'django.contrib.auth',  
'django.contrib.contenttypes',  
'django.contrib.sessions',  
'django.contrib.messages',  
'django.contrib.staticfiles',]  
  
# urls.py  
from django.urls 
import path  
from . import views    
urlpatterns = [path('', views.index, name='index'),]  
 
# views.py  
from django.http 
import HttpResponse    
def index(request):  
return HttpResponse("Hello, world. You're at the polls index.")  
解释:
  • INSTALLED_APPS:定义安装的应用。
  • urlpatterns:定义URL模式。
  • index:视图函数。

3.FastAPI:现代Web框架

  • FastAPI是一个现代、快速(高性能)的Web框架,基于Python 3.6+类型提示。它用于构建API,支持异步操作。
安装:
pip install fastapi  
pip install uvicorn  
示例:
from fastapi 
import FastAPI    
app = FastAPI()  
  
@app.get("/")  
async def read_root():return {"Hello": "World"}  
if __name__ == "__main__":  
import uvicorn uvicorn.run(app, host="127.0.0.1", port=8000)  
解释:
  • from fastapi import FastAPI:导入FastAPI类。
  • app = FastAPI():创建FastAPI实例。
  • @app.get("/"):定义GET路由。
  • read_root:异步视图函数。

4.Tornado:异步Web框架

  • Tornado是一个开源的Python Web框架,专为异步处理而设计,适用于大规模并发请求。
安装:
pip install tornado  
示例:
import tornado.ioloop  
import tornado.web    
class MainHandler(tornado.web.RequestHandler):  
def get(self):self.write("Hello, world")  
def make_app():  
return tornado.web.Application([(r"/", MainHandler),])    
if __name__ == "__main__":  
app = make_app()  
app.listen(8888)  
tornado.ioloop.IOLoop.current().start()  
解释:
  • import tornado.ioloop:导入IOLoop模块。
  • MainHandler:请求处理器。
  • make_app:创建应用实例。

5.Pyramid:灵活的Web框架

  • Pyramid是一个灵活且可扩展的Web框架,适合开发任何规模的Web应用程序。
安装
pip install pyramid  
示例:
from wsgiref.simple_server 
import make_server  
from pyramid.config 
import Configurator    
def hello_world(request):return {'message': 'Hello, world!'}    
if __name__ == '__main__':  
config = Configurator()  
config.add_route('hello', '/')  
config.add_view(hello_world, route_name='hello')  
app = config.make_wsgi_app()  
server = make_server('0.0.0.0', 6543, app)  
server.serve_forever()  
解释:
  • from wsgiref.simple_server import make_server:导入WSGI服务器
  • Configurator:配置器类。
  • add_route:添加路由。
  • add_view:添加视图。

6.Sanic:高性能Web框架

  • Sanic是一个轻量级的Python Web框架,专为高性能而设计,适用于构建RESTful API。
安装:
pip install sanic  
示例:
from sanic 
import Sanic  
from sanic.response 
import json    
app = Sanic("My Hello, world app")    
@app.route("/")  
async def test(request):  
return json({"hello": "world"})    
if __name__ == "__main__": app.run(host="0.0.0.0", port=8000, debug=True)  
解释:
  • from sanic import Sanic:导入Sanic类。
  • app = Sanic("My Hello, world app"):创建Sanic实例。
  • @app.route("/"):定义路由。
  • test:异步视图函数。
  • app.run(host="0.0.0.0", port=8000, debug=True):启动服务器。

7.Bottle:轻量级Web框架

  • Bottle是一个轻量级的Web框架,适用于小型项目或简单的Web应用程序。
安装:
pip install bottle  
示例:
from bottle 
import route, run  
@route('/')  
def hello_world():return 'Hello, World!'    
run(host='localhost', port=8080, debug=True)  
解释:
  • from bottle import route, run:导入route和run函数。
  • @route('/'):定义路由。
  • hello_world:视图函数。
  • run(host='localhost', port=8080, debug=True):启动服务器。

8.Starlette:高性能Web框架

  • Starlette是一个高性能的Web框架,适用于构建现代Web应用程序,特别是API。
安装:
pip install starlette  
示例:
from starlette.applications 
import Starlette  
from starlette.responses 
import JSONResponse, PlainTextResponse  
from starlette.routing 
import Route    
async def homepage(request):return JSONResponse({'hello': 'world'})  
app = Starlette(routes=[Route('/', homepage),])    
if __name__ == "__main__":  
import uvicorn uvicorn.run(app, host="127.0.0.1", port=8000)  
解释:
  • from starlette.applications import Starlette:导入Starlette类。
  • from starlette.responses import JSONResponse:导入JSONResponse类。
  • homepage:异步视图函数。
  • app = Starlette(routes=[Route('/', homepage)]):创建Starlette实例并定义路由。
  • uvicorn.run(app, host="127.0.0.1", port=8000):启动服务器。

9.aiohttp:异步Web框架

  • aiohttp是一个异步Web框架,适用于构建高性能Web应用程序和API。
安装:
pip install aiohttp  
示例:
from aiohttp 
import web    
async def handle(request):name = request.match_info.get('name', "Anonymous")  
text = "Hello, " + name  
return web.Response(text=text)  
app = web.Application()  
app.add_routes([web.get('/', handle),  
web.get('/{name}', handle)])  
web.run_app(app)  
解释:
  • from aiohttp import web:导入web模块。
  • handle:异步视图函数。
  • app = web.Application():创建aiohttp实例。
  • app.add_routes([web.get('/', handle), web.get('/{name}', handle)]):定义路由。
  • web.run_app(app):启动服务器。

10.Cherrypy:成熟Web框架

  • Cherrypy是一个成熟的Web框架,适用于构建各种规模的Web应用程序。
安装:
pip install cherrypy  
示例:
import cherrypy  
class HelloWorld(object):  
@cherrypy.expose  
def index(self):  
return "Hello, world!"    
if __name__ == '__main__':  
cherrypy.quickstart(HelloWorld()) 
解释:
  • import cherrypy:导入cherrypy模块。
  • class HelloWorld(object):定义类。
  • @cherrypy.expose:暴露方法。
  • index:视图函数。
  • cherrypy.quickstart(HelloWorld()):启动服务器。

11.Falcon:轻量级Web框架

  • Falcon是一个轻量级的Web框架,适用于构建高性能API。
安装:
pip install falcon  
示例:
import falcon    
class ThingsResource:  
def on_get(self, req, resp): """Handles GET requests"""  
resp.status = falcon.HTTP_200  
resp.body = ('This is an example web service')    
app = falcon.App()  
app.add_route('/things', ThingsResource())    
if __name__ == '__main__':  
from wsgiref 
import simple_server  
httpd = simple_server.make_server('127.0.0.1', 8000, app)  
httpd.serve_forever()  
解释:
  • import falcon:导入falcon模块。
  • class ThingsResource:定义类。
  • on_get:处理GET请求。
  • app = falcon.App():创建falcon实例。
  • app.add_route('/things', ThingsResource()):定义路由。
  • httpd.serve_forever():启动服务器。

12.Hug:简洁的Web框架

  • Hug是一个简洁的Web框架,适用于构建API,特别强调简洁性和性能。
安装:
pip install hug  
示例:
import hug   
@hug.get('/')  
def hello_world():  
return {'hello': 'world'}    
if __name__ == '__main__':  
hug.API(__name__).http.serve(port=8000)  
解释:
  • import hug:导入hug模块。
  • @hug.get('/'):定义GET路由。
  • hello_world:视图函数。
  • hug.API(__name__).http.serve(port=8000):启动服务器。

13.Quart:异步Web框架

  • Quart是一个异步Web框架,适用于构建异步Web应用程序和API。
安装:
pip install quart  
示例:
from quart 
import Quart, jsonify app = Quart(__name__)    
@app.route('/')  
async def hello_world():
return jsonify({'hello': 'world'})    
if __name__ == '__main__': app.run(debug=True)  
解释:
  • from quart import Quart:导入Quart类。
  • app = Quart(__name__):创建Quart实例。
  • @app.route('/'):定义路由。
  • hello_world:异步视图函数。
  • app.run(debug=True):启动服务器。

14.Web2py:全功能Web框架

  • Web2py是一个全功能的Web框架,适用于开发各种规模的Web应用程序。
安装:
pip install web2py  
示例:
def index():return dict(message="Hello, world!")    
if __name__ == '__main__':  
from gluon.main 
import run  
run()  
解释:
  • def index():视图函数。
  • return dict(message="Hello, world!"):返回字典
  • from gluon.main import run:导入run函数。
  • run():启动服务器。

15.Morepath:可扩展Web框架

  • Morepath是一个可扩展的Web框架,适用于开发可扩展性强的Web应用程序。
安装:
pip install morepath  
示例:
import morepath    
class App(morepath.App):  
pass    
@App.path(path="")  
def get_root():return Root()  
@App.view(model=Root)  
def root_default(self, request):  
return "Hello, world!"    
class Root:pass    
if __name__ == '__main__':  
morepath.scan(App)  
App().run()  
解释:
  • import morepath:导入morepath模块。
  • class App(morepath.App):定义类。
  • @App.path(path=""):定义路径。
  • get_root:获取根对象。
  • @App.view(model=Root):定义视图。
  • root_default:视图函数。
  • morepath.scan(App):扫描App类。
  • App().run():启动服务器。

本文介绍了多个Python Web框架,包括轻量级的Flask、全能型的Django、现代的FastAPI、异步的Tornado、灵活的Pyramid以及更多其他框架。这些框架各有特点,可以根据项目的具体需求来选择最适合的框架进行开发。

图片

总结

  • 最后希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!

文末福利

  • 最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。

包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里]】领取!

  • ① Python所有方向的学习路线图,清楚各个方向要学什么东西
  • ② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
  • ③ 100多个Python实战案例,学习不再是只会理论
  • ④ 华为出品独家Python漫画教程,手机也能学习

可以扫描下方二维码领取【保证100%免费

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2212908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】深入理解指针(三)(下)

本篇文章将讲解以下知识: 1、二维数组传参的本质 2、函数指针变量 3、函数指针数组 1、二维数组传参的本质 有了数组指针的理解,我们就能弄清楚二维数组传参的本质了 例如: 在一维数组中,数组名是数字首元素的地址。但有两个例外…

【进阶OpenCV】 (10)--光流估计--->描绘运动物体轨迹

文章目录 光流估计一、基本原理二、计算步骤三、实现步骤1. 处理第一帧2. 寻找特征点3. 创建全零掩膜4. 流光估计函数介绍5. 主循环处理视频的每一帧5.1 流光估计5.2 绘制轨迹5.3 生成最终图像5.4 更新旧灰度图和旧特征点 6. 释放资源 总结 光流估计 光流估计是计算机视觉中的…

操作系统——磁盘管理

目录 前言基础实例1.1读取磁盘数据计算时间1.2磁盘调度算法1.3单双缓冲区1.4磁盘基础知识 前言 本文简述操作系统中有关磁盘的相关知识点,作为软件设计师考试资料复习 基础 磁盘管理是指对计算机中的磁盘进行有效地管理和使用的过程。磁盘管理包括以下方面&#…

软件测试工程师面试整理 —— 操作系统与网络基础!

在软件测试中,了解操作系统和网络基础知识对于有效地进行测试工作至关重要。无论是在配置测试环境、调试网络问题,还是在进行性能测试和安全测试时,这些知识都是不可或缺的。 1. 操作系统基础 操作系统(Operating System, OS&am…

【Redis】网络模型(day10)

在本篇文章中,主要是对五种网络模型进行一个简单的介绍,然后对Redis4.0和6.0的网络模型进行一个概述。 用户空间和内核空间 在Linux系统上,分为用户空间、内核空间和硬件设备。硬件设备主要包括CPU、内存、网卡等物体,内核应用去…

垃圾回收器和垃圾回收机制(简单介绍,用于回忆总结)

文章目录 垃圾回收机制1. 分代收集2. 标记复制3. 标记清除4. 标记压缩(整理) 垃圾回收器1. Serial / Serial Old2. Parallel Scavenge3. ParNew收集器4. CMS收集器5. G1收集器 参考链接 垃圾回收机制 1. 分代收集 分代收集(Generational Co…

吉时利KEITHLEY 2657A源表keithley2651A数字源表

Keithley 2657A 源表是一款高电压、高功率、低电流源测量单元 (SMU) 仪器,可提供前所未有的功率、精度、速度、灵活性和易用性,以提高研发、生产测试和可靠性环境中的生产力。 Keithley 2657A SourceMeter 仪器专门设计用于表征和测试高压电子器件和功率…

【隐私计算篇】一种批量匿踪查询友好算法PIRANA的原理分析

1. 背景分析 前段时间开展了批量匿踪查询算法迭代优化的工作,取得了一些进展。不得不说,甲方爸爸永远会提出非常有挑战性的目标,push你去想各种解决方案。在实际的算法研发落地上,我们会结合算法本身的机制改进以及工程优化这两方…

力扣hot100--二叉树

目录 二叉树 1. 94. 二叉树的中序遍历 2. 98. 验证二叉搜索树 3. 101. 对称二叉树 二叉树 1. 94. 二叉树的中序遍历 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[1,3,2]示…

[ComfyUI]最好用的图像提示词反推工具发布 2.0 版本啦!更好用了!

图像提示词反推工具我也介绍了好一些了,但是架不住技术一直在迭代啊!过一段时间就出一个新的,或者是升级版,所以我们的分享也不能停! 前段时间 joy_caption 蛮火的,不过后来也陆陆续续出了一些比较好用的反…

JMeter性能测试时,如何做CSV参数化

在现代软件开发中,性能测试是保证应用程序在高负载条件下稳定运行的重要环节。为了实现真实场景的测试,参数化技术应运而生。其中,CSV参数化是一种高效且灵活的方法,可以让测试人员通过外部数据文件驱动测试脚本,从而模…

U-Boot阶段系统全量更新固件包制作杂记

背景:有一个在 U-Boot 阶段做系统全量自更新的需求,要制作系统的全量固件包(U-Boot.img、kerlen.img、rootfs.img)。大体分为三个主要部分:U-Boot-shell 脚本编写、打包各镜像为一个固件包、固件包的加密和解密 一、U…

电采暖集控系统陕西高陵体育馆应用项目案例

电采暖集控系统是一种集监测、控制和管理于一体的智能管理系统,旨在提高采暖效率、降低能耗和运营成本,同时提升用户的舒适度。该系统利用先进的计算机控制技术和系统集成技术,实现对电热采暖设备的集中管理和远程操控。 陕西高陵体育馆 是…

四川方维嘉术科技有限公司简介

四川方维嘉术科技有限公司 公司简介 四川方维嘉术科技有限公司成立于2023年,注册资本100万元整,位于中国西南地区的中心位置,是一家专注于供应医疗设备、高值耗材并提供医疗方面解决方案的企业。 【主要代理产品】 湖南瑞康通 &#xff1…

Alberta Wells数据集:首个包含超过213,000个油气井的大规模高质量基准数据集,它们是温室气体和其他污染物的重要来源,助力环境监测与气候变化。

2024-10-11,由Mila – Quebec AI Institute和McGill University等机构创建了首个大规模油井检测数据集,这个数据集的意义在于提供了一个工具,能够通过卫星图像识别和定位全球数以百万计的废弃油气井,这对于减少温室气体排放和保护…

数据结构与算法:堆与优先队列的深入剖析

数据结构与算法:堆与优先队列的深入剖析 堆是一种特殊的树形数据结构,广泛应用于优先队列的实现以及各种高效的算法中,如排序和图算法。通过深入了解堆的结构、不同堆的实现方式,以及堆在实际系统中的应用,我们可以掌…

使用js和canvas实现简单的网页打砖块小游戏

玩法介绍 点击开始游戏后,使用键盘上的←→控制移动,小球会不停移动,板子触碰小球时会反弹,碰撞到砖块时会摧毁砖块,如果没有用板子接住小球就游戏失败 代码实现 代码比较简单,直接阅读注释即可&#x…

工作日志:elementplus上传图片问题

问题&#xff1a;打开弹窗&#xff0c;上传一张照片后&#xff0c;关闭再打开&#xff0c;之前上传的图片仍在列表里展示。 然后添加了几行代码&#xff0c;报错。 <el-upload list-type"picture-card":limit"1":on-success"handleAvatarSuccess&…

Spring Boot 之三大配置文件.properties、.yml、.yaml 及其优先级解析

Spring Boot 的强大之处在于其高度可配置性&#xff0c;允许开发者根据不同环境和需求定制应用程序的行为。而这一切的核心便是配置文件。Spring Boot 支持多种配置文件格式&#xff0c;其中最常用的三种是 .properties、.yml 和 .yaml。 1. .properties&#xff1a;传统方式 …

基于NXP LS1023+FPGA的嵌入式解决方案

基于 NXP公司的LS1043A高性能64位ARM四核处理器。 LS1043A处理器是NXP公司面向嵌入式网络推出的一款四核64位ARM处理器&#xff0c; 支持无风扇设计的灵活I/O封装&#xff0c; 提供超过10 Gbps的性能&#xff0c;是专为小规格网络和工业应用而设计的解决方案。全新23x23封装方式…