Python库的多样性使得它们可以在不同的应用场景中发挥作用,不同场景下同一个库可能拥有不同的功能,本系列未来会有不同的分类,可能会出现相同的库。数量很多,慢慢整理。文中的示例都是最基础的用法,有些就顺手写了,有些就丢给Ai,看个乐就行。
1. Jinja2 – 强大的 HTML 模板引擎(Flask 的默认模板引擎)
功能: Jinja2 是一个现代的模板引擎,支持继承、宏、过滤器等高级功能。
使用场景:
- 与 Flask 结合构建 Web 应用。
- 需要模板继承和复杂逻辑的项目。
- 生成动态 HTML 内容。
示例:
<!DOCTYPE html> <html> <head> <title>{{ title }}</title> </head> <body> <h1>{{ header }}</h1> {% for item in items %} <li>{{ item }}</li> {% endfor %} </body> </html>
2. Mako – 高效 HTML 模板引擎
功能: Mako 是一个 Python 模板库,提供高效的模板渲染和强大的表达式语言。
使用场景:
- 需要高性能模板渲染的项目。
- 与 Python 代码紧密结合的模板逻辑。
- 支持复杂的控制结构和 Python 代码块。
示例:
<!DOCTYPE html> <html> <head> <title>${title}</title> </head> <body> <h1>${header}</h1> % for item in items: <li>${item}</li> % endfor </body> </html>
3. Chameleon – XML/HTML 模板引擎,兼容 Django 和 Zope
功能: Chameleon 是基于 TAL(Template Attribute Language)的模板引擎,支持 XML/HTML 模板。
使用场景:
- 与 Django 或 Zope 集成。
- 需要 XML 兼容性的模板。
- 支持复杂的模板结构和条件渲染。
示例:
<tal:block define="title string:Page Title; header string:Welcome"> <html> <head> <title tal:content="title">Default Title</title> </head> <body> <h1 tal:content="header">Default Header</h1> <ul tal:repeat="item items"> <li tal:content="item">Item</li> </ul> </body> </html>
5. Tornado Templates – Tornado 的内置模板引擎
功能: Tornado 自带的模板引擎,设计简洁,支持基本的控制流和模板继承。
使用场景:
- 与 Tornado Web 框架结合使用。
- 需要轻量级模板引擎的项目。
- 简单模板逻辑的 Web 应用。
示例:
<!DOCTYPE html> <html> <head> <title>{{ title }}</title> </head> <body> <h1>{{ header }}</h1> {% for item in items %} <li>{{ item }}</li> {% end %} </body> </html>
6. Cheetah3 – 快速灵活的模板引擎
功能: Cheetah3 是一个 Python 模板引擎,提供了快速、灵活的模板渲染。
使用场景:
- 需要快速渲染的模板。
- 与 Python 代码紧密集成的模板逻辑。
- 构建动态内容或生成代码。
示例:
#from cheetah import Template <html> <head> <title>$title</title> </head> <body> <h1>$header</h1> #for item in $items: <li>$item</li> #end for </body> </html>
7. Django REST Framework (DRF) – Django 的 REST API 开发工具
功能: DRF 是一个强大的工具包,用于构建 RESTful API,提供序列化、认证、权限等功能。
使用场景:
- 构建 Django 基于的 REST API。
- 需要序列化、认证、权限控制的 API。
- 快速开发高质量的 API。
示例:
from rest_framework import serializers, viewsets from .models import Item class ItemSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Item fields = ['url', 'title', 'description'] class ItemViewSet(viewsets.ModelViewSet): queryset = Item.objects.all() serializer_class = ItemSerializer
8. FastAPI – 内置 OpenAPI 支持的高效框架
功能: FastAPI 是一个高性能的 Python 框架,用于构建 API,支持异步处理和自动生成 OpenAPI 文档。
使用场景:
- 需要高性能的 API 开发。
- 自动生成 API 文档。
- 与 Pydantic 数据验证结合的项目。
示例:
from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"Hello": "World"} @app.get("/items/{item_id}") async def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q}
9. Flask-RESTful – 为 Flask 添加 REST API 支持
功能: Flask-RESTful 是一个 Flask 扩展,简化了 RESTful API 的开发。
使用场景:
- 构建基于 Flask 的 REST API。
- 需要快速、简单的 API 开发。
- 资源路由和请求解析。
示例:
from flask import Flask from flask_restful import Api, Resource, reqparse app = Flask(__name__) api = Api(app) class Item(Resource): def get(self, item_id): return {"item": item_id} api.add_resource(Item, '/item/<int:item_id>') if __name__ == '__main__': app.run(debug=True)
10. Masonite – 类似 Laravel 的现代框架
功能: Masonite 是一个 Python Web 框架,受 Laravel 启发,提供了一个现代、优雅的开发体验。
使用场景:
- 需要类似 Laravel 的开发体验。
- 构建全栈 Web 应用。
- 与其他 Python 包和框架集成。
示例:
from masonite.routes import Route def hello(): return "Hello, Masonite!" Route.get('/', hello)