Python常用Web开发框架及使用示例
Python拥有丰富的Web开发框架生态系统,以下是主流框架及其使用示例:
一、Flask - 轻量级框架
安装
pip install flask
基础示例
from flask import Flask, request, jsonify
app = 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'] = True
return 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 render
def 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 views
urlpatterns = [
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, HTTPException
app = 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 OAuth2PasswordBearer
oauth2_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.web
class 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 Response
def 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
每个框架都有其独特的优势和适用场景,建议根据项目需求和个人熟悉程度选择合适的框架。