REST-FRAMEWORK开发的API部署到production后database内容不显示
DRF项目生产环境接口返回空数据排查步骤
以下是这类问题最高发的几个易漏点,按排查优先级排序:
- 先核对生产环境数据库连接配置:本地开发大多默认用项目目录下的SQLite文件库,部署时如果没切换生产数据库配置、或者配置错了库名/账号/地址,会直接连到一个空的新库,自然查不到数据。如果项目拆分了多环境配置文件,部署启动服务时要确认指定了生产配置,比如启动命令带
--settings=xxx.settings.prod,别默认加载本地开发配置。 - 确认数据是否导入生产库:只传代码不传数据是新手部署最高发的问题。本地环境先执行
python manage.py dumpdata > backup.json导出全量数据,传到生产服务器后,先执行python manage.py migrate跑完所有表结构迁移,再执行python manage.py loaddata backup.json把数据导入生产库。 - 进生产环境Django shell直接校验数据是否存在:在生产服务器项目目录下执行
python manage.py shell,导入对应业务模型后执行YourModel.objects.all().count(),如果返回0,说明要么连错库、要么没导数据、要么迁移没跑完;如果能查到对应数量的数据,问题出在接口层。 - 接口层优先查权限配置:生产环境设置
DEBUG=False后,DRF默认权限策略会拦截未认证的请求,部分配置下不会返回403而是直接返回空列表。去settings.py的REST_FRAMEWORK配置块核对DEFAULT_PERMISSION_CLASSES,公开接口需要加上rest_framework.permissions.AllowAny,内部接口要确认请求时携带了有效的认证Token/会话凭证。 - 检查视图层的过滤逻辑:有没有写死和本地环境绑定的过滤条件?比如硬编码筛选
env='dev'、is_test=True这类标记,生产数据没打对应标签就会被全部过滤掉,返回空列表。
问题现场参考:
生产环境产品列表为空:
本地环境存在对应数据:
内容的提问来源于stack exchange,提问作者Victor Torres
相关产品推荐
相关产品推荐



