Django运行时修改变量需重启服务器才更新,是否遗漏配置?
你给出的视图和模板代码逻辑没有问题,修改context变量后刷新不更新,基本都是以下几个原因导致的,你可以逐一排查:
- 运行的是生产环境服务器
如果你用的是uWSGI、Gunicorn等生产级WSGI服务器,这类服务启动时会把所有代码一次性加载到内存中,运行过程中修改本地代码不会触发内存中代码的更新,必须重启服务器进程才会加载新代码,这是生产环境的正常机制。 - 本地开发服务器自动重载未生效
Django自带的runserver开发服务器仅在DEBUG = True时默认开启代码修改自动重载功能,如果你的settings.py中DEBUG设为了False,或是启动服务时加了--noreload参数,自动重载就会被关闭,修改代码后必须手动重启服务才会生效。 - 配置了缓存规则
如果你给index视图加了@cache_page装饰器,或是在settings.py中开启了全站缓存、缓存中间件,在缓存过期前请求会直接返回缓存的旧响应,不会执行更新后的视图代码,自然拿不到新的context值。 - 浏览器本地缓存
部分情况下浏览器会缓存静态页面内容,你可以按Ctrl+F5(Mac为Cmd+Shift+R)强制刷新忽略本地缓存,或者用隐私模式访问验证是否是浏览器缓存导致的问题。 - 代码未同步到运行环境
如果你是在Docker容器、虚拟机、远程服务器上运行Django服务,要确认你本地修改的代码已经同步到了服务运行的环境中,环境中还是旧代码的话刷新自然不会更新。
内容的提问来源于stack exchange,提问作者crybaby
相关产品推荐
相关产品推荐

