Python全栈开发

4 阅读4分钟

一、什么是 Python 全栈开发

全栈开发指能够同时处理前端、后端、数据库和部署。Python 全栈通常包括:

  • 后端:Python 框架提供 API 或页面;
  • 前端:HTML/CSS/JS,或 Vue、React;
  • 数据库:PostgreSQL、MySQL、SQLite、Redis;
  • 接口:REST、GraphQL、WebSocket;
  • 部署:Docker、Nginx、云服务器、CI/CD;
  • 工程:测试、日志、监控、安全。

Python 的优势在于后端和工程化,前端仍需要 JavaScript。所以 Python 全栈不是“只用 Python”,而是“以 Python 为核心,连接整个技术栈”。

二、技术栈怎么选

后端三大主流:

  • Django:全家桶,自带 ORM、Admin、认证,适合快速做完整产品;
  • Flask:轻量灵活,适合小型服务和微服务;
  • FastAPI:异步、类型提示、自动文档,适合现代 API。

前端可以选择:

  • 模板渲染:Jinja2 + HTML,适合传统 Web;
  • 前后端分离:Vue、React、Svelte,适合交互复杂的应用。

数据库常用 PostgreSQL,缓存用 Redis,异步任务用 Celery 或 RQ,部署用 Docker + Nginx。

一个现代组合是:FastAPI + Vue/React + PostgreSQL + Redis + Docker。

三、项目结构

清晰的结构是可维护的前提:

project/
  app/
    main.py
    models.py
    schemas.py
    routers/
    services/
  web/          # 前端
  tests/
  Dockerfile
  docker-compose.yml

后端按“路由—服务—模型”分层,前端独立构建,部署时由 Nginx 统一入口。

四、少量代码:后端 API

用 FastAPI 写一个待办接口:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Todo(BaseModel):
    title: str
    done: bool = False

todos = []

@app.post("/todos")
def create(todo: Todo):
    todos.append(todo)
    return todo

@app.get("/todos")
def list_todos():
    return todos

这段代码已经包含:路由、请求体校验、内存存储、JSON 返回。FastAPI 还会自动生成 Swagger 文档。

如果要用数据库,可以接入 SQLAlchemy:

from sqlalchemy import create_engine, Column, Integer, String, Boolean
from sqlalchemy.orm import declarative_base, sessionmaker

Base = declarative_base()

class TodoModel(Base):
    __tablename__ = "todos"
    id = Column(Integer, primary_key=True)
    title = Column(String)
    done = Column(Boolean, default=False)

engine = create_engine("sqlite:///app.db")
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)

真实项目还要加迁移工具 Alembic、连接池和事务管理。

五、前端调用

前后端分离时,前端通过 fetch 或 axios 调用 API:

async function loadTodos() {
  const res = await fetch("/api/todos");
  const data = await res.json();
  console.log(data);
}

如果用 Vue,可以把数据绑定到列表;如果用 React,可以用状态管理。核心都是:前端负责展示和交互,后端负责数据和规则。

六、认证与权限

全栈系统绕不开登录。常见方案是 JWT:

  1. 用户提交账号密码;
  2. 后端验证后签发 token;
  3. 前端保存 token;
  4. 后续请求携带 Authorization: Bearer <token>;
  5. 后端校验 token 并识别用户。

FastAPI 可以用依赖注入统一校验:

from fastapi import Depends, HTTPException

def get_current_user(token: str = Depends(oauth2_scheme)):
    user = decode_token(token)
    if not user:
        raise HTTPException(401, "未登录")
    return user

权限控制要区分角色:普通用户、管理员、运营。敏感操作必须二次校验。

七、模板渲染还是前后端分离

两种方式各有场景:

  • 模板渲染:Django、Flask + Jinja2,SEO 好,开发快,适合内容站、后台系统;
  • 前后端分离:API + Vue/React,交互强,适合 SPA、移动端、复杂应用。

很多项目是混合模式:主站用模板,后台用 SPA,API 共用。

八、部署与运维

开发完成只是开始。生产部署通常包括:

  • Docker:打包应用和依赖;
  • Nginx:反向代理、静态文件、HTTPS;
  • Gunicorn/Uvicorn:运行 Python 应用;
  • PostgreSQL/Redis:数据与缓存;
  • CI/CD:自动测试、构建、发布;
  • 监控:日志、指标、告警。

一个简单 Dockerfile:

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]

再用 docker-compose 编排数据库和缓存,就能一键启动。

九、性能与安全

全栈开发者必须关注:

  • 性能:数据库索引、缓存、异步、分页、CDN;
  • 安全:SQL 注入、XSS、CSRF、越权、敏感信息泄露;
  • 稳定性:限流、熔断、重试、健康检查;
  • 可观测:结构化日志、链路追踪、错误上报。

不要等上线后才考虑安全和性能,它们应该从设计阶段就进入。

十、学习路径建议

  1. Python 基础与异步编程;
  2. 选一个后端框架:FastAPI 或 Django;
  3. 数据库与 ORM:SQL、PostgreSQL、SQLAlchemy;
  4. 前端基础:HTML、CSS、JavaScript;
  5. 前端框架:Vue 或 React;
  6. 接口设计:REST、认证、错误处理;
  7. 部署运维:Linux、Docker、Nginx、CI/CD;
  8. 实战项目:博客、商城、管理系统、API 服务。