Python Web 路由详解:核心知识点全覆盖

文章目录

Python Web 路由详解:核心知识点全覆盖

本文以直白、通俗的方式,系统讲解 Python Web 开发中路由的核心概念、工作原理、常见写法与使用细节,不讲废话、不堆冗余内容,让你一篇吃透路由到底是什么、怎么用、为什么这么写。


一、什么是路由?一句话讲明白

路由 = 请求地址 + 对应执行的函数

浏览器访问一个 URL,比如:

复制代码
http://127.0.0.1:8000/login

后端根据 /login 这个路径,找到提前绑定好的函数并执行,这个**"路径匹配 + 函数调用"**的机制,就叫路由。

你可以理解为:

路由就是 Web 框架里的"导航员"。


二、路由的核心作用

  1. 规定用户访问哪个地址,执行什么逻辑
  2. 区分不同业务接口(登录、注册、上传、查询等)
  3. 接收前端传参(路径参数、查询参数、表单等)
  4. 决定返回什么内容(HTML、JSON、文件等)

三、一个最简单的路由示例(以 FastAPI 为例)

python 复制代码
from fastapi import FastAPI

app = FastAPI()

# 路由:访问 / 时,执行下面函数
@app.get("/")
def index():
    return {"message": "首页"}

# 路由:访问 /login 时,执行登录逻辑
@app.post("/login")
def login():
    return {"message": "登录接口"}
  • @app.get("/"):装饰器,用来注册路由
  • /:请求路径
  • get:请求方法
  • 下面的函数:路径匹配成功后执行的逻辑

四、路由的四大基本要素

1. 请求方法(Method)

最常用就 4 种:

  • GET:查询、获取数据(查)
  • POST:提交、新增数据(增)
  • PUT:更新数据(改)
  • DELETE:删除数据(删)

框架会根据方法+路径一起匹配,方法不对直接 405 错误

2. 请求路径(Path)

就是 URL 里域名后面的部分:

  • /
  • /user
  • /upload
  • /article/123

3. 视图函数 / 接口函数

路径匹配成功后真正干活的函数。

4. 响应结果

函数 return 什么,前端就收到什么。


五、路由传参方式(最常用的 3 种)

1. 路径参数(直接写在 URL 里)

python 复制代码
@app.get("/user/{user_id}")
def get_user(user_id: int):
    return {"用户ID": user_id}

访问:/user/1001,就能拿到 user_id=1001

2. 查询参数(? 后面的参数)

python 复制代码
@app.get("/search")
def search(keyword: str, page: int = 1):
    return {"关键词": keyword, "页码": page}

访问:/search?keyword=python&page=2

3. 请求体参数(POST、表单、JSON)

python 复制代码
from pydantic import BaseModel

class User(BaseModel):
    username: str
    password: str

@app.post("/register")
def register(user: User):
    return {"账号": user.username}

六、路由前缀与分组(实际开发必用)

项目大了以后,接口会非常多,必须模块化拆分

以 FastAPI APIRouter 为例:

python 复制代码
from fastapi import APIRouter

user_router = APIRouter(prefix="/user", tags=["用户模块"])

@user_router.get("/info")
def user_info():
    return {"msg": "用户信息"}

最终访问路径:/user/info

好处:

  • 结构清晰
  • 方便权限控制
  • 便于维护和文档分类

七、路由匹配规则(非常重要)

  1. 精确匹配优先
    /user/info 会优先匹配写死的路由,而不是 /user/{id}
  2. 顺序从上到下匹配
    前面的路由先匹配,匹配成功就不再往下走
  3. 方法必须一致
    定义 @app.get,前端用 post 访问会报错
  4. 路径大小写敏感
    /Login/login 是两个不同路由

八、其他 Python Web 框架路由对比(一眼看懂)

Flask 路由

python 复制代码
from flask import Flask
app = Flask(__name__)

@app.route("/")
def index():
    return "Hello"

Django 路由(urls.py

python 复制代码
from django.urls import path
from . import views

urlpatterns = [
    path("", views.index),
    path("login/", views.login),
]

思想完全一致:路径 → 函数


九、路由常见错误

  1. 404 Not Found
    路径写错、路由没注册、方法不匹配
  2. 405 Method Not Allowed
    用 post 访问了 get 接口
  3. 参数类型错误
    路径参数应该是 int,传了字符串
  4. 路由重复注册
    同一个路径+方法绑定了多个函数

十、总结(极简版)

  • 路由 = 地址 + 函数
  • 核心:方法 + 路径 + 函数 + 参数
  • 传参分三种:路径参数、查询参数、请求体
  • 大型项目一定要用路由分组(Router)
  • 匹配顺序:从上到下,精确优先
相关推荐
方安乐4 小时前
python之向量、向量和、向量点积
开发语言·python·numpy
candyTong5 小时前
一觉醒来,大模型就帮我排查完页面性能问题
前端·javascript·架构
魔术师Grace5 小时前
我给 AI 做了场入职培训
前端·程序员
zh1570235 小时前
JavaScript中WorkerThreads解决服务端计算瓶颈
jvm·数据库·python
小小小米粒5 小时前
Collection单列集合、Map(Key - Value)双列集合,多继承实现。
java·开发语言·windows
玩嵌入式的菜鸡5 小时前
网页访问单片机设备---基于mqtt
前端·javascript·css
蜡台6 小时前
Python包管理工具pip完全指南-----2
linux·windows·python
Mr.朱鹏6 小时前
【Python 进阶 | 第四篇】Psycopg3 + Flask 实现 PostgreSQL CRUD 全流程:从连接池到RESTful接口
python·postgresql·flask·virtualenv·fastapi·pip·tornado
前端一小卒6 小时前
我用 Claude Code 的 Superpowers 技能链写了个服务,部署前差点把服务器搞炸
前端·javascript·后端
czhc11400756636 小时前
C# 428 线程、异步
开发语言·c#