Linux环境下Django Admin变更视图不生效问题排查求助
排查Django模板修改Linux环境不生效的问题
1. 核对模板路径与大小写
Linux文件系统区分大小写,Windows不区分,务必确认:
- 模板文件/目录的大小写和代码中引用的完全匹配(比如代码里写
admin/model/change_form.html,Linux下不能是Admin/Model/Change_Form.html) - 检查
settings.py中TEMPLATES配置的DIRS和APP_DIRS,确保Linux环境下目标模板目录被正确纳入搜索路径,避免相对路径在部署环境下失效
2. 清理Django模板缓存
生产环境下Django默认开启模板缓存,修改后未清理会持续使用旧版本:
- 执行命令清理Django内置缓存:
python manage.py clearcache - 若使用Redis、Memcached等外部缓存服务,直接重启服务或手动清空对应缓存库
- 临时切换非缓存模板加载器测试(测试后改回生产配置):
TEMPLATES = [ { # 保留原有其他配置 'OPTIONS': { 'loaders': [ 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', ], # 注释掉所有'cached_loaders'相关配置 }, }, ]
3. 验证collectstatic执行情况
- 检查
collectstatic执行时是否有报错,确认静态资源(含模板引用的CSS/JS)已同步到STATIC_ROOT目录,且Nginx/Gunicorn进程对该目录有读取权限 - 注意:app目录下的
templates文件不会被collectstatic处理,需确认对应app已加入INSTALLED_APPS,且模板路径未被其他优先级更高的模板覆盖
4. 检查Gunicorn运行权限与代码目录
- 确认Gunicorn运行用户(如www-data)对模板文件有读取权限,执行
ls -l查看文件所有者和权限配置 - 排查是否因虚拟环境未正确激活、代码目录为镜像挂载(修改的本地文件未同步到镜像)等导致Gunicorn加载旧代码
5. 直接检查页面源码
在Linux服务器上用curl请求目标页面,查看返回的HTML源码中是否包含新增按钮的代码,排除前端样式差异导致按钮被隐藏的可能
内容的提问来源于stack exchange,提问作者Akrej
相关产品推荐
相关产品推荐

