开源WMS系统GreaterWMS部署实战:Django+Quasar前后端分离,从解压到业务流程闭环
发布时间:2026/9/25 20:13:56 锦皓数字建站

简介GreaterWMS仓库管理系统v2.1.48以完整源码压缩包形式提供面向仓库管理场景适合软件开发学习者、毕业设计选题学生及有二次开发需求的企业开发者。其核心功能覆盖库存控制、业务流程处理与报表分析可帮助优化仓库运营并提升物流效率。包体共2000个文件以JavaScript、Python、Vue为主配合CSS样式、JSON配置与Markdown文档整体约85.15MB其中大量Vue与JavaScript文件构成用户界面Python与C文件支撑后端逻辑Markdown文档便于阅读学习。目前已有202人浏览学习对于初学者与进阶开发者均有参考价值。得益于源码开放使用者可深入研究数据库设计、模块化编程及用户交互实现也可参考包内附带的安装与操作文档快速上手同时内置的界面模板、数据分析工具和库存预警机制便于根据实际需求二次开发或直接用于课程设计与案例教学。1. 先从 zip 包说起GreaterWMS 解决的是仓库现场的哪类问题做仓库管理系统选型的人经常在商业软件和自研之间犯难商业 WMS 一年授权十几万改个打印模板都要提需求排队自己从头写库存、批次、预占、盘点这些概念能把团队磨掉半年。GreaterWMS 是开源阵营里被聊得比较多的那一套后端用 Django 出接口、前端用 Quasar 做界面一个 zip 压缩包解压之后就是一套可以部署的 Web 仓储管理系统电脑、平板、手机都能打开同一个系统干活。v2.1.48 这个版本属于常规发版解压、配环境、起服务几步就能看到登录页。它解决的是中小仓库“想要一套改得动的数字化工具”的问题适合三类人正在给仓库做选型的负责人、给客户交付 WMS 项目的实施工程师、想深入仓储业务做研发的程序员。下文按我自己的实施习惯展开从解压讲到踩坑尽量让你照着走一遍就能跑起来。2. 先把架构捋清楚Django Quasar 各自管什么、zip 里是什么拿到 zip 包先别急着双击解压更别期待解压出来就能点图标运行。GreaterWMS 是前后端分离的 Web 工程不是传统的单体应用解压完不能直接启动你得先把“后端负责数据、前端负责界面”这个边界建立起来后面所有配置和排错才有坐标。这一章不贴代码只讲清楚三件事这个系统由哪几块组成、解压后目录结构怎么认、Redis 在中间充当什么角色。花十来分钟看完你会比直接跟着教程敲命令的人少很多困惑。2.1 后端 Django 的边界只出 REST API不管页面长相GreaterWMS 的业务核心都在后端 Django 工程里。Django 本身是 Python 的老牌 Web 框架自带 ORM、URL 路由、权限体系在此基础上项目又引入了 Django REST FrameworkDRF把业务能力封装成 HTTP 接口前端通过 JSON 来交换数据。你在后端代码里最常打交道的是三类文件models.py 定义数据库表结构serializers.py 控制数据怎么序列化成 JSONviews.py 和 urls.py 决定接口地址和返回逻辑。比如“库存”这个概念在后端对应的是某张数据表和相关的状态字段你查库存、扣库存、回滚库存都在后端处理。修改一个业务规则比如“发货必须强制称重”就要在后端视图里加校验逻辑前端动都不用动。很多人第一次搭这类项目容易犯的错误是跑到前端去找业务逻辑翻半天每个文件都看不懂记住第一原则就好数据库表、库存变动、权限校验都在后端这一侧。Django 自带了一个 Admin 后台地址通常是 /admin登录后可以直接看到数据库表的管理页面。这个后台直接复用项目数据模型做数据订正、初始化字典非常方便。实施的时候我一般建议先用 Admin 录入基础货主和库房再让仓库人员去前台界面操作业务单据两边对照着看很容易理解系统的数据依赖关系。2.2 前端 Quasar 的边界SPA 界面、扫码枪、平板适配Quasar 是 Vue 生态里一个偏重组件和工程化的框架和 Element UI、Ant Design 类似但更强调“一套代码跑多个形态”。GreaterWMS 的前端就是一个标准的 Quasar 工程编译产物是单页应用SPA运行在浏览器里页面上的表格、弹窗、表单、消息提醒都靠 Quasar 的组件拼出来。仓库现场有很强的移动端诉求收货时用 PDA 扫描上架时用平板看车位复核时又回到 PC。Quasar 的响应式组件在这一层比较省力同一个页面在手机上也挤得出可点的按钮。你如果要在前端改东西需要知道的是 Vue 单文件组件的结构一段模板、一段脚本、一段样式要加一列就在表格的列定义里追加字段再把这个字段映射到后端返回的数据键名上。前端和后端的联系靠 HTTP 请求。开发环境里Quasar 的 dev server 默认跑在一个独立端口比如 8080 或 9000然后通过代理把 /api 开头的请求转发到 Django 的 8000 端口生产环境则把 Quasar build 出来的静态文件交给 Nginx。所以一旦出现“页面能打开但数据刷不出来”的现象八成是接口代理或跨域问题而不是前端页面本身的缺陷。2.3 解压后目录怎么认入口文件、配置文件、业务代码三层拿到任意带版本号的 zip我习惯按“入口文件 → 配置文件 → 业务代码目录”三层去定位而不是通读全部文件。先 ls 看根目录见到 manage.py 就说明这是 Django 后端工程它是所有 Python 操作的入口runserver、migrate、createsuperuser 全都要经过它见到 package.json 和 quasar.config.js 说明这是前端工程npm 命令和构建参数都以这里为准。如果 zip 把前后端放在同一个根目录通常会有一个后端子目录和一个前端子目录后端特征文件是 manage.py前端特征文件是 package.json。后端的配置集中在一个 settings 相关模块里数据库连接、Redis 地址、跨域白名单、静态文件和媒体文件路径都在那里改。前端的业务代码主要看 quasar.config.js 里写的 devServer 配置和 src 目录src/views 里放页面src/components 里放可复用组件src/store 里放全局状态。这里我建议做一件事解压之后先打开 requirements.txt 和 package.json 看一眼依赖清单不要全装。requirements.txt 能让你知道后端用了哪些库比如 Django 版本、DRF 版本、redis 客户端版本package.json 的 scripts 字段能让你看到前端支持哪些命令比如 quasar dev 是开发调试quasar build 是打包生产。这两个文件相当于系统的说明书比任何目录结构都准确。还有一个 Windows 上常见的坑解压 zip 时如果路径里有中文或者空格某些 Python 库在后续文件查找时会翻车尤其是涉及媒体文件上传的环节。我会把项目解压到纯字母、无空格的目录比如 ~/apps/greaterwms命名带版本号也没关系但目录层级不要太深。2.4 Redis 为什么省不掉会话、缓存和库存中间态全靠它WMS 的现场操作高频而且细碎一个收货动作可能要触发多次库存锁定和状态变更每次都去查重量级数据库并发一高响应时间就上去了。Redis 作为内存型键值存储天然适合承接这类低延迟操作。在 GreaterWMS 这类系统里Redis 的典型角色有三个第一是缓存存字典、菜单、权限这类变化少读得多的数据第二是会话存储让用户在不同终端登录后状态一致第三是消息传递把打印任务、报表生成这类耗时操作丢到异步队列里执行。理解 Redis 的这一层对你日常排错有实际意义。后端启动时如果报连接超时首先检查 Redis 服务有没有起来而不是怀疑代码写错登录页一直转圈、接口偶尔超时十有八九是 Redis 没配对地址。另一个容易被忽略的点是版本升级之后Redis 里存的数据结构和项目新版本可能不兼容程序会读到旧格式的数据然后报错我一般在升级前会把 Redis 清一遍让系统重新构建缓存这是风险最低的操作。所以部署顺序应当固定为先启动 Redis再启动后端 Django最后启动前端 Quasar。后文把安装流程按这个顺序展开你照做就行。3. 跑通 0 到 1解压、装依赖、改配置、启动前后端前面架构看明白了这一步就是纯操作。v2.1.48 这个 zip 包对应的是一套完整的前后端代码不是已经编译好的成品所以环境准备这一关省不了。下面我按“环境自查 → 后端初始化 → 前端构建 → 启动自检”四步走每步都给了命令和参数说明照着复制时把路径替换成你自己的实际解压目录。3.1 环境自查版本对不上是最隐蔽的失败原因先花五分钟把环境版本列出来比安装失败之后再回头排查省时间。下面这张表是我在实际部署时认为比较稳妥的版本区间不是官方硬性要求但踩过的坑基本都集中在版本的边界上。依赖推荐版本说明Python3.8 到 3.11太新的 Python 在个别第三方库可能没有预编译包导致安装报错Node.js16 或 18 LTS影响前端依赖安装和 Quasar 构建过新版本会有兼容问题Redis5.0 以上后端运行必需Windows 下可以用 Memurai 或 WSL 运行数据库SQLite开发/ MySQL 5.7 以上SQLite 部署最简单生产环境建议换 MySQLPython 版本这一点最容易出问题。Python 3.12 发布后一些 C 扩展类的依赖会因为缺少 wheel 而尝试源码编译Windows 上没有编译链就直接失败。所以如果你机器上默认的 python3 版本高于 3.11我会建议用 pyenv 或者直接装一个 3.10 的独立环境来跑这套系统省得跟依赖较劲。数据库的选择逻辑也很直白本地测试用 SQLite零配置文件即数据库migrate 完就能跑生产环境还用 SQLite多线程并发写会锁库报表一跑就卡死。切换到 MySQL 时注意编码设置为 utf8mb4否则中文和特殊字符在排序、查询时会有乱码问题。3.2 后端初始化命令装依赖、迁移数据库、创建管理员后端初始化的目标是把 Python 依赖装好、把数据表建出来、把管理员账号创建好。这里用虚拟环境是必须的不要图省事直接 pip install 到系统 Python后面安装别的项目时会互相污染。# 解压到自定义目录避免中文路径和带空格的路径 unzip GreaterWMS仓库管理系统_2.1.48.zip -d ~/apps/greaterwms cd ~/apps/greaterwms # 创建 Python 虚拟环境并激活 python3 -m venv venv source venv/bin/activate # 确认当前 Python 版本在 3.8 ~ 3.11 之间 python --version # 安装后端依赖这一步根据网络情况可能需要几分钟 pip install -r requirements.txt # 执行数据库迁移把 models 映射成真实的数据库表 python manage.py migrate # 创建管理员账号按提示输入用户名、邮箱和密码 python manage.py createsuperuser命令的逻辑是按顺序推进的先解压是把你手里的 zip 变成可操作的代码目录venv 隔离环境避免污染全局migrate 的作用是让 Django 按照 models.py 的定义去建表不执行这一步后面接口一查数据就会报“no such table”createsuperuser 则是写入一个超级管理员账号用来登录 Admin 后台和系统前台。参数说明里只有一个地方可能需要调整pip 如果下载慢可以追加-i https://pypi.tuna.tsinghua.edu.cn/simple指定国内镜像源。Windows 用户把source venv/bin/activate换成venv\Scripts\activate其他命令一致。3.3 前端依赖安装和构建npm 镜像、代理配置前端这步的复杂度不在代码而在 npm 的依赖安装速度和网络。Quasar 工程依赖数量多node_modules 体积经常超过 500MB第一次安装要有心理准备。npm 官方源在国内不稳定我一般会临时切换到镜像源再装。# 进入前端目录目录名以实际解压结构为准 cd frontend # 安装前端依赖使用淘宝镜像源加速 npm install --registryhttps://registry.npmmirror.com # 启动开发模式 npx quasar dev安装完成后npx quasar dev会启动一个开发服务器。这个开发服务器除了提供页面访问之外还承担了接口代理的工作页面请求 /api 开头的地址时dev server 会按 quasar.config.js 里 devServer 的代理配置把请求转发到后端 Django。所以如果你改了后端端口必须同步修改前端代理目标否则页面能打开但列表一直空。这里有个细节要提醒npm install 过程中如果看到大量 warn 不用慌只要没报 error 就可以继续如果某个依赖安装失败优先删掉 node_modules 目录再重新 install不要在某一个包上反复重试。前端依赖树非常深单包修复往往只会制造更多问题重装反而是最快的后悔药。3.4 按顺序启动并做三项自检依赖装好之后启动顺序按照前面强调的Redis 最先后端其次前端最后。我习惯开三个终端窗口分别跑服务这样日志不会混在一起出错时能直接定位到是哪个进程在报错。# 终端 1启动 Redis 服务 redis-server # 终端 2启动 Django 后端0.0.0.0 允许局域网内其他设备访问 python manage.py runserver 0.0.0.0:8000 # 终端 3启动前端开发服务器 cd frontend npx quasar dev三个进程都起来之后做三项自检第一浏览器打开前端地址默认端口看 quasar.config.js 里的配置常见是 8080 或 9000能看到登录页第二用刚才 createsuperuser 创建的账号登录系统能进主界面说明认证链路通了第三直接 curl 一下后端接口确认数据链路没有断。# 用 curl 验证后端是否响应实际路径以后端 urls.py 为准 curl http://localhost:8000/api/返回内容如果是 JSON 或者一个可见的接口列表就说明后端服务在工作如果返回连接拒绝再查后端终端日志里有没有异常。这三项自检做完系统就算基本跑通了后面才轮到配置业务数据和调业务参数。4. 在系统里走一遍仓储作业收货、上架、出库、盘点如何闭环系统跑起来只是开始WMS 的价值在于把仓库里“货怎么进、怎么放、怎么出、怎么盘”这四件核心事管起来。这一章按实际作业顺序讲业务操作不贴大段代码重点放在数据对象和状态流转的配合上。你配置完主数据之后按这个流程走一遍就能体会到这套系统在仓储逻辑上的闭环设计。4.1 初始化主数据货主、仓库、库区、库位这样建任何 WMS 上线之前第一件事都是建立主数据。主数据不建好后面所有单据都没法归位。GreaterWMS 的主数据维度大致分为货主、仓库、库区和库位四个层级层级之间是包含关系。对象作用配置要点货主业务主体相当于租户维度多货主共用一套系统时权限按货主隔离仓库物理仓库的建模一个货主可以管理多个仓库库区仓库内部的功能分区按收暂存区、存储区、拣货区、退货区划分库位最小的物理存储位置编码规则建议包含库区、巷道、货架、层列货主这一层很容易被忽视。很多仓库把 GreaterWMS 当成单仓工具来用所有货都挂在一个货主下面但如果你后期要接第三方仓储业务或者一个集团下面多个公司共用系统货主就是天然的权限边界。我一般建议哪怕只有一个仓也先把货主建好避免后面数据要迁移。库位编码规则尤其要想清楚比如 A-01-02-03 表示 A 区 01 巷道 02 货架 03 层一旦上线后改了编码盘点和拣货路径全要跟着乱。4.2 入库链路收货、质量检验、上架搬库入库不是“点一下入库”就行完整的链路是采购或调拨单据先创建然后仓库收货可能经历质量检验最后上架到具体库位。GreaterWMS 对这张单据的处理逻辑是先创建预期入库的凭证收货时按实际到货数量登记上架后库存才变成可用状态。收货环节的核心是数量核对和批次记录。仓库人员在移动端或 PDA 上逐件扫描系统按条码匹配 SKU登记实收数量。如果实收和预期不一致系统会触发差异记录这部分差异要到后面财务对账时用。质检环节不是每个仓库都有有的话就在收货和上架之间插入一步质量状态标记比如把库存标记为“待检”和“合格”。上架是整个入库链路里最讲究动作。系统通常会根据商品属性和库位占用情况给出建议库位实际操作如果发现目标库位已满可以人工改放空闲库位。上架完成那一刻库存才计入“可用库存”之前的所有数据都只是过渡状态。这就是为什么你刚录完收货单去查库存是查不到的别以为系统出 bug 了是状态还没走到位。4.3 出库链路订单、预占、拣货、复核、发货出库链路比入库更长涉及的单据更多。一张客户订单进入系统后先要经过库存预占把对应数量的可用库存锁定给这笔订单防止其他订单抢走同一批货。预占这一步特别重要它决定了你能不能承诺客户“可以发货”。系统设计上会把预占库存和实际库存分开显示账面上看还有库存但可能已被预占了一部分。预占完成之后生成拣货任务仓库人员按任务单去对应库位取货。这里系统一般支持按照先进先出或者批次去匹配具体发哪一批货你要在初始化时把出库策略定好。拣货完成后进入复核环节扫描已拣商品确认数量无误然后打包称重生成物流面单最后发货。看到这里你应该能理解为什么库存扣减不发生在订单创建那一刻而是发生在发货后。订单创建只是预占拣货还没离开仓库发货才代表库存真正出库。如果订单取消预占释放库存回到可用如果拣货后发现少货也可以在复核环节拦截。这套状态机把业务风险和库存误差分散到了不同节点而不是一次性扣减。4.4 盘点与库存调整盘盈盘亏的处理逻辑盘点做的是核对账实差异。系统里的库存是账面数仓库实际货位上可能因为出入库差错、破损、丢失而和账面不一致定期盘点就是把这些差异找出来。盘点操作的常见做法是创建盘点任务指定盘哪些库区然后仓库人员逐库位清点录入实盘数量。系统会把实盘数和账面数自动对比生成差异清单。盘盈的原因通常是上次出库少发了或者入库重复登记盘亏的原因多为丢失、破损未处理、发货发错。处理时需要对差异进行确认和审核审核通过后系统生成库存调整单把账面数改成实盘数同时留下调整记录方便日后追溯。这里有个经验值得强调盘点差异不要只看总数要看库位层的差异。系统显示整仓盘盈 3 件你如果不去看具体是哪个库位多出来的很可能忽略掉背后某个操作流程的漏洞。上线初期建议每周做一次动碰盘点只盘有出入库动作的库位成本低而且能快速暴露问题。5. 避坑记录部署 GreaterWMS 最容易踩的 5 个现场问题任何一套系统部署和使用过程中都有那么几个反复出现的坑。下面这五条是我在实际跑这类 Django Quasar 架构时整理出来的现象、原因、解决按三段式写你遇到类似报错可以直接对号入座。5.1 后端一直报 Redis 连接错误但 Redis 明明装好了现象后端启动后日志出现连接超时或连接被拒绝提示和 Redis 有关或者登录页一直转圈接口请求卡住不返回。原因最常见的是 Redis 服务没启动或者后端配置里的 Redis 地址、端口、密码和实际运行参数不一致。Windows 上还有一个隐蔽情况装了 Redis 但没注册成服务重启机器后 Redis 没有自动拉起后端自然连不上。解决先确认 Redis 进程在跑Linux 上用redis-cli ping看是否返回 PONGWindows 上到服务管理里看 Redis 服务状态然后打开后端的 settings 配置核对 REDIS_HOST、REDIS_PORT、REDIS_PASSWORD 这三项。改了配置后记得重启后端进程Django 的 runserver 虽然会自动 reload但连接信息在进程启动时初始化改完不重启不生效。5.2 数据库迁移成功一跑业务却报表不存在或字段不存在现象python manage.py migrate 执行时没报错但登录系统后某些页面报数据库错误比如 no such table 或者 unknown column。原因migrate 只是把当前版本的模型同步到数据库如果你是从旧版本升级上来的可能漏了中间某个迁移文件或者迁移时用的数据库和生产配置的数据库不一致本地用 SQLite 迁移完上线切到 MySQL 没重新迁移。另外一个常见原因是直接在数据库管理工具里改了表结构导致 Django 的迁移记录和实际表结构对不上。解决确认当前连接的是哪一套数据库打开 settings 看 DATABASES 配置然后重新执行迁移必要时先python manage.py migrate --run-syncdb补一次同步。如果你手动改过表结构老实把改动撤销回到 Django 迁移的轨道上来。数据库变更永远走迁移文件这是 Django 项目的基本纪律。5.3 前端能打开登录后接口全部 404 或超时现象浏览器能看到登录页输入账号密码后页面报错打开开发者工具看到请求状态是 404或者请求卡住直到超时。原因前端 dev server 和后端不在同一套配置下。常见的是前端代理指向的端口是 8000但后端实际跑在 8080或者前端地址用的是 localhost而后端绑定的是 0.0.0.0 且服务器防火墙没放行。还有一种情况是后端 Django 设置了跨域白名单前端的 Origin 不在白名单里请求被拦截。解决先看浏览器开发者工具里具体请求的 URL判断是不是代理目标地址不对再查 quasar.config.js 的 devServer.proxy 配置把 target 改成实际后端地址。跨域问题则在 Django 的 CORS 配置里把前端地址加入白名单。记住一个原则页面能打开是前端的事数据刷不出来是前后端连接的事排查重点永远在代理和跨域这两个点上。5.4 上传商品图片后刷新页面就图片丢失现象商品档案里上传了图片当前页面能显示一刷新或者重新登录后图片地址变成 404文件不见了。原因Django 的媒体文件处理需要两个配置同时成立MEDIA_ROOT 指定文件存放的本地目录MEDIA_URL 提供访问路径。开发模式下还需要在 urls.py 里加静态文件路由。很多人只配置了其中一个文件写到了服务器目录但在 URL 上找不到入口或者根本没有配置 MEDIA_ROOT文件被写到了默认的临时位置。解决检查 settings 里 MEDIA_ROOT 和 MEDIA_URL 是否正确然后在 Django 的根 urls.py 里确认有static()路由来服务媒体文件。生产环境部署时Nginx 需要单独配一个 location 指向 MEDIA_ROOT 目录。上传文件的目录权限也要确认否则保存成功但写入权限不足文件只是在内存里过了一下。5.5 单据上的时间比本地时间晚了 8 小时现象系统里创建的入库单、出库单上的时间显示和本地时间不一致看起来比北京时间晚了 8 小时有时日期还会变成前一天。原因Django 默认的 TIME_ZONE 通常设置成 UTCUSE_TZ 开启时数据库里存的是 UTC 时间显示时需要做时区转换。如果前端直接把接口返回的原始时间字符串渲染出来就会看到 UTC 时间也就是比北京时间晚 8 小时。解决把 settings 里的 TIME_ZONE 改成Asia/Shanghai同时确认 USE_TZ 的设置符合你的业务。如果只是国内单仓使用可以把 USE_TZ 关掉让系统直接使用本地时间存库如果有多时区或多仓需求保留 USE_TZ 开启前端做一次时间格式化。改了配置记得重启后端并且最好把已经写入的历史错误数据一并修正否则对账时会被时间戳坑一次。6. 再进一步用 API 把 WMS 接进现有业务系统本地跑通之后更大的价值在于开放接口。仓库系统很少孤立存在它要承接上游 ERP 的采购单、销售单也要把库存和发货状态回传给电商平台或财务系统。GreaterWMS 基于 Django REST Framework天然就是接口优先的架构做二次集成比想象中直接。6.1 找到 API 入口和鉴权方式后端启动后接口入口就在 Django 的 URL 路由里一般以 /api 开头的路径都属于业务接口。DRF 的接口文档可以通过浏览器访问路径通常在 /api/docs 或 /swagger 下能看到所有接口的列表、请求方法和参数定义。第一次接触时别急着写代码先把文档翻一遍确认你要用的创建入库单、查询库存这类接口的真实路径以及每个字段必填还是选填。鉴权方式上DRF 常见的方案是 Token 认证或 JWT 认证。登录接口返回一个 token后续请求在请求头里带Authorization: Token xxxxx或Authorization: Bearer xxxxx具体看该版本的认证配置。测试阶段可以用 Django Admin 创建的账号调用登录接口获取 token比手工去数据库插记录安全得多。6.2 一个最小的 Python 集成示例下面这段是集成测试的最小框架思路是登录、拿 token、带 token 调业务接口。注意接口路径要以你实际版本的文档为准这里只展示调用结构。import requests # 这里替换成环境真实的登录接口和账号 BASE_URL http://localhost:8000 # 第一步登录获取 token login_resp requests.post( f{BASE_URL}/api/login/, json{username: admin, password: your_password} ) token login_resp.json().get(token) if not token: raise RuntimeError(f登录失败: {login_resp.text}) # 第二步构造请求头后续接口都带上 headers {Authorization: fBearer {token}, Content-Type: application/json} # 第三步调一个读接口验证连通性路径以实际文档为准 resp requests.get(f{BASE_URL}/api/stock/, headersheaders, timeout10) print(resp.status_code, resp.json())这段代码的关键点是把登录和业务调用拆成两个步骤。登录是一次性的token 拿到后可以复用一段时间不需要每个请求都重新登录请求头里的 Authorization 是 DRF 识别用户身份的依据漏掉它就会返回 401 未认证。timeout 参数建议显式设置否则接口卡住时脚本会一直挂着集成任务里这是最常见的事故源。6.3 验证接口通没通两个低成本的办法第一直接 curl 看 HTTP 状态码。登录接口返回 200 且有 token 字段说明账号和密码没问题业务接口返回 200 或 201说明权限和数据链路都通。curl -X POST http://localhost:8000/api/login/ \ -H Content-Type: application/json \ -d {username:admin,password:your_password}第二故意传一个错误参数比如把必填字段留空看接口返回的是参数校验错误还是数据库错误。如果是参数校验错误说明 DRF 的序列化校验在工作如果是 500 或数据库异常说明接口内部有 bug 或数据没初始化。集成测试时多做这一步能把问题控制在联调阶段而不是等业务跑起来才暴露。我自己的习惯是每接一个接口先花五分钟用 curl 打一次再用 Python 脚本打一次最后才接业务逻辑。这套系统接口数量不少但结构统一、鉴权清晰集成难度主要集中在业务语义的对接上也就是你要搞清楚仓库接口的“预占”“过账”到底对应你业务流程里的哪一步。这个弄明白之后GreaterWMS 完全可以作为你们仓储中台的底座。希望这篇记录帮你少走一段弯路。本文还有配套的精品资源点击获取
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。