关键词搜索与分页

关键词搜索与分页

关键词搜索与分页 本章你将学会用 SQLAlchemy 实现联合搜索,并用 offset/limit 实现分页。 ilike 大小写不敏感搜索 实例 [mycode4 type='python'] # 单字段搜索 posts = db.query(Post).filter(Post.title.ilike(f'%{keyword}%')).all() # 多字段联合搜索(OR 关系)..

用户系统 — 注册、登录、JWT 认证

用户系统 — 注册、登录、JWT 认证

用户系统 — 注册、登录、JWT 认证 本章你将学会 FastAPI 的 JWT 认证方案,理解它和 Django/Flask Session 认证的区别。 JWT vs Session 认证 Django 和 Flask 用的是 Session 认证:服务器存储用户状态,Cookie 中只存 Session ID。 FastAPI 推荐 JWT 认证:用户登录后获得一个 Token(令牌),后续请求携带 Token 即可认证。 ..

收藏功能与后台管理

收藏功能与后台管理

收藏功能与后台管理 本章你将学会用多对多关系实现收藏功能,并用 sqladmin 搭建后台管理。 多对多关系设计 实例 [mycode4 type='python'] # 文件路径:models.py 新增关联表和修改 Post 模型 from sqlalchemy import Table # 关联表:User 和 Post 的多对多中间表 favorites = Table( 'f..

fastapi打包上线

fastapi打包上线

打包上线 — 部署到 Railway 本章你将学会 FastAPI 的生产环境配置,并用 Railway 将博客部署上线。 生产环境配置管理 (venv) $ pip install pydantic-settings python-dotenv 实例 [mycode4 type='python'] # 文件路径:config.py from pydantic_settings import Bas..

FastAPI Web 应用

FastAPI Web 应用

用 FastAPI 创建 Web 应用,自动生成的 API 文档。 按需扩展高性能,类型驱动 异步

Jinja2 模板

Jinja2 模板

Jinja2 模板 本章你将学会在 FastAPI 中配置 Jinja2 模板引擎,用静态文件和模板继承构建完整的 HTML 页面。 FastAPI 的两种渲染模式 FastAPI 默认返回 JSON(适合 API),但也能返回 HTML(适合 SSR)。 两种模式可以共存——同一个项目既可以提供 JSON API,也可以渲染网页。 挂载静态文件 静态文件(CSS、JS、图片)通过 StaticFiles 挂载到指定路径。 ..

SQLAlchemy 模型 — 设计数据库表

SQLAlchemy 模型 — 设计数据库表

SQLAlchemy 模型 — 设计数据库表 本章你将学会用原生 SQLAlchemy ORM 定义数据模型,并通过 FastAPI 依赖注入管理数据库会话。 FastAPI 为什么不用自带 ORM? Django 有内置 ORM,Flask 推荐 Flask-SQLAlchemy。 FastAPI 没有内置 ORM——它希望你选择最适合的工具,SQLAlchemy + Pydantic 是社区公认的最佳组合。 (venv) ..

Pydantic Schema — 数据验证与序列化

Pydantic Schema — 数据验证与序列化

Pydantic Schema — 数据验证与序列化 本章你将学会 Pydantic Schema,理解它与 ORM 模型的职责分离,这是 FastAPI 最核心的特性。 为什么需要 Schema? ORM 模型(models.py)定义数据库结构,但不能直接用于 API 的请求/响应校验。 原因:ORM 模型包含数据库专用逻辑(如 relationship),且不希望将所有字段暴露给 API。 Pydantic Schema ..

路由与文章列表、详情页

路由与文章列表、详情页

路由与文章列表、详情页 本章你将学会用 APIRouter 拆分路由,实现首页文章列表和文章详情页。 APIRouter — FastAPI 的路由拆分方案 APIRouter 对标 Flask 的 Blueprint 和 Django 的 include()。 实例 [mycode4 type='python'] # 文件路径:routers/posts.py from fastapi import A..

Alembic 数据库迁移

Alembic 数据库迁移

Alembic 数据库迁移 本章你将学会用 Alembic 管理数据库结构变更,理解与 Django Migration、Flask-Migrate 的异同。 为什么需要迁移工具? Base.metadata.create_all() 同样有致命缺陷:只在表不存在时创建,修改已有表结构不会自动同步。 Alembic 是 SQLAlchemy 官方的迁移工具,Django 的 makemigrations/migrate 和 Fla..