1. Flask
- **特点**:轻量级、灵活,核心代码简单,易于上手,开发者可以根据需求自由选择和添加扩展。
- **适用场景**:适合初学者入门,以及快速搭建小型项目、原型验证、API 服务等。
- **示例代码**:
python
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run(debug=True)
在这个示例中,我们创建了一个简单的 Flask 应用,当访问根路径时,会返回 "Hello, World!"。
2. Django
- **特点**:功能强大、全面,自带了许多实用的功能,如数据库管理、用户认证、表单处理、管理界面等,遵循 MVC(Model-View-Controller)架构,有严格的代码规范和项目结构。
- **适用场景**:适用于开发大型、复杂的 Web 应用,如电商平台、社交网站等。
- **示例代码**:
python
# 假设已经创建了一个 Django 项目和应用
# 在应用的 views.py 文件中
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello, Django!")
# 在项目的 urls.py 文件中
from django.contrib import admin
from django.urls import path
from your_app.views import hello
urlpatterns = [
path('admin/', admin.site.urls),
path('hello/', hello),
]
这个示例展示了如何在 Django 中创建一个简单的视图函数,并将其映射到一个 URL 上。
3. FastAPI
- **特点**:基于 Python 的类型提示,具有高性能、快速开发的特点,能够自动生成 API 文档,支持异步编程。
- **适用场景**:适合构建高性能的 API 服务,特别是对并发处理有较高要求的场景。
- **示例代码**:
python
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
此示例创建了一个简单的 FastAPI 应用,当访问根路径时,会返回一个 JSON 响应。
4. Tornado
- **特点**:具有高性能、非阻塞 I/O 和异步处理能力,能够处理大量并发连接,适合构建实时性要求较高的应用。
- **适用场景**:适用于开发实时通信应用、游戏服务器、长连接服务等。
- **示例代码**:
python
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()
这个示例创建了一个简单的 Tornado 应用,监听 8888 端口,当访问根路径时,会返回 "Hello, Tornado!"。
5. Sanic
- **特点**:基于异步编程,性能卓越,语法与 Flask 相似,易于学习和迁移。
- **适用场景**:适合对性能要求较高的 Web 应用和 API 服务。
- **示例代码**:
python
from sanic import Sanic
from sanic.response import text
app = Sanic("MyHelloWorldApp")
@app.get("/")
async def hello_world(request):
return text("Hello, Sanic!")
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000)
此示例创建了一个简单的 Sanic 应用,监听 8000 端口,当访问根路径时,会返回 "Hello, Sanic!"。
这些框架各有优劣,你可以根据项目的需求、规模、性能要求以及团队的技术栈来选择合适的框架。