当前位置: 首页 > news >正文

python 常用web开发框架及使用示例

Python常用Web开发框架及使用示例

Python拥有丰富的Web开发框架生态系统,以下是主流框架及其使用示例:

一、Flask - 轻量级框架

安装

pip install flask

基础示例

from flask import Flask, request, jsonifyapp = Flask(__name__)@app.route('/')
def home():return "Hello, Flask!"@app.route('/api', methods=['GET', 'POST'])
def api():if request.method == 'POST':data = request.get_json()return jsonify({"received": data})return {"message": "This is a GET request"}if __name__ == '__main__':app.run(debug=True)

高级功能

from flask import render_template, redirect, url_for, session@app.route('/user/<username>')
def user_profile(username):return render_template('profile.html', username=username)@app.route('/login', methods=['POST'])
def login():session['logged_in'] = Truereturn redirect(url_for('home'))

二、Django - 全功能框架

安装

 
pip install django

创建项目和应用

 
django-admin startproject myproject
cd myproject
python manage.py startapp myapp

基础示例

 
# myapp/views.py
from django.http import HttpResponse
from django.shortcuts import renderdef index(request):return HttpResponse("Hello, Django!")def greet(request, name):return render(request, 'greet.html', {'name': name})

URL配置

# myproject/urls.py
from django.urls import path
from myapp import viewsurlpatterns = [path('', views.index),path('greet/<str:name>/', views.greet),
]

模板示例 (greet.html)

<!DOCTYPE html>
<html>
<head><title>Greeting</title>
</head>
<body><h1>Hello, {{ name }}!</h1>
</body>
</html>

三、FastAPI - 高性能异步框架

安装

pip install fastapi uvicorn

基础示例

from fastapi import FastAPI, HTTPExceptionapp = FastAPI()@app.get("/")
def read_root():return {"message": "Hello, FastAPI!"}@app.get("/items/{item_id}")
def read_item(item_id: int):if item_id < 0:raise HTTPException(status_code=400, detail="Item ID must be positive")return {"item_id": item_id}

运行

uvicorn main:app --reload

高级功能

from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBeareroauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")def get_current_user(token: str = Depends(oauth2_scheme)):if token != "secret":raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED,detail="Invalid authentication credentials",)return {"username": "admin"}@app.get("/protected")
def protected_route(user=Depends(get_current_user)):return user

四、Tornado - 异步网络框架

安装

pip install tornado

基础示例

import tornado.ioloop
import tornado.webclass MainHandler(tornado.web.RequestHandler):def get(self):self.write("Hello, Tornado!")def make_app():return tornado.web.Application([(r"/", MainHandler),])if __name__ == "__main__":app = make_app()app.listen(8888)tornado.ioloop.IOLoop.current().start()

高级功能

class AsyncHandler(tornado.web.RequestHandler):async def get(self):await tornado.gen.sleep(1)self.write("Async response after 1 second")

五、Pyramid - 灵活框架

安装

pip install pyramid

基础示例

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Responsedef home(request):return Response("Hello, Pyramid!")if __name__ == '__main__':with Configurator() as config:config.add_route('home', '/')config.add_view(home, route_name='home')app = config.make_wsgi_app()server = make_server('0.0.0.0', 6543, app)server.serve_forever()

六、Bottle - 微框架

安装

pip install bottle

基础示例

from bottle import route, run, template@route('/')
def home():return "Hello, Bottle!"@route('/hello/<name>')
def greet(name):return template('<b>Hello {{name}}</b>!', name=name)run(host='localhost', port=8080, debug=True)

七、Web2py - 全栈框架

安装

# 下载并运行
python web2py.py

特点

  • 内置数据库管理
  • 自动代码生成
  • 完整的MVC支持

八、框架对比

框架类型性能学习曲线适用场景
Flask轻量级小型应用、API服务
Django全功能企业级应用、CMS
FastAPI异步高性能API、微服务
Tornado异步实时应用、长连接
Pyramid灵活中大型应用、定制化需求
Bottle微框架极简应用、嵌入式
Web2py全栈快速开发、教育项目

九、选择建议

  1. ​快速原型开发​​:Flask或Bottle
  2. ​企业级应用​​:Django
  3. ​高性能API​​:FastAPI
  4. ​实时应用​​:Tornado
  5. ​需要灵活性​​:Pyramid
  6. ​教育/简单项目​​:Web2py

每个框架都有其独特的优势和适用场景,建议根据项目需求和个人熟悉程度选择合适的框架。

http://www.xdnf.cn/news/253351.html

相关文章:

  • Python 在世界地图上加气泡图
  • 【多线程】六、基于阻塞队列的生产者消费者模型
  • react js 查看字体效果
  • MySQL 中的游标(Cursor)
  • NV162NV172美光固态颗粒NV175NV188
  • SpringBoot癌症患者交流平台设计开发
  • Flutter AppBar 详解
  • gRPC学习笔记记录以及整合gin开发
  • 【云备份】配置文件加载模块
  • 贝叶斯算法(Bayesian Algorithms)详解
  • DBeaver连接人大金仓数据库V9
  • Nginx搭建test服务器
  • 企业级分布式 MCP 方案
  • 文章六:《循环神经网络(RNN)与自然语言处理》
  • 第十六届蓝桥杯 2025 C/C++组 客流量上限
  • 2025五一数学建模竞赛A题完整分析论文(共45页)(含模型、可运行代码、数据)
  • 【服务器通信-socket】——int socket(int domain, int type, int protocol);
  • LangChain入门(五)AI记住聊天历史
  • Android基础控件用法介绍
  • 报文三次握手对么٩(๑^o^๑)۶
  • 开源ERP系统对比:Dolibarr、ERPNext与Odoo
  • 【每日八股】复习 Redis Day5:集群(上)
  • 云原生后端:构建高效、可扩展的现代后端架构
  • HBM的哪些事
  • 【凑修电脑的小记录】vscode打不开
  • React useCallback函数
  • 从爬虫到网络---<基石3> gfw防火墙是怎么保护我们的?
  • Linux系统:进程程序替换以及相关exec接口
  • CMake separate_arguments用法详解
  • Trae 安装第三方插件支持本地部署的大语言模型