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 | 全栈 | 中 | 低 | 快速开发、教育项目 |
九、选择建议
- 快速原型开发:Flask或Bottle
- 企业级应用:Django
- 高性能API:FastAPI
- 实时应用:Tornado
- 需要灵活性:Pyramid
- 教育/简单项目:Web2py
每个框架都有其独特的优势和适用场景,建议根据项目需求和个人熟悉程度选择合适的框架。