Django网站无法显示context字典传递的模板变量值
Django模板未渲染context传入变量的排查解决
贴出的视图、模板代码本身语法没有错误,变量空白不渲染基本都是以下三类配置问题导致,按顺序排查即可:
- 模板加载路径不匹配,Django读取的不是你编辑的这份index.html
打开项目settings.py找到TEMPLATES配置项,检查DIRS字段是否正确配置了你的模板存放目录,标准配置参考:
快速验证方法:在你编辑的index.html里加一行写死的特殊标记,比如TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR / 'templates'], # 确认这里的路径和你存index.html的路径一致 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]<p>DEBUG_MARK_999</p>,刷新页面后如果看不到这行内容,直接全局搜索项目里其他的index.html文件,Django实际加载的是其他位置的同名文件。 - 路由绑定错误,访问的路径没有映射到你写的index视图
打开项目urls.py,检查对应访问路径绑定的视图函数是不是你写的index,避免出现多个同名视图绑错、或者路由指向其他未传context的同模板视图的问题。
快速验证方法:在index视图函数第一行加print("ENTER MY INDEX VIEW"),访问页面后看VS Code终端有没有打印这行内容,没打印就是路由配置错误。 - 模板引擎配置异常,未正常解析Django模板语法
还是看上面的TEMPLATES配置,确认BACKEND字段是默认的Django模板后端,不要随意改成其他第三方模板后端。如果之前手动修改过string_if_invalid配置,把它临时注释掉恢复默认,默认配置下变量找不到会直接输出原变量名,方便排错。
内容的提问来源于stack exchange,提问作者BLANK
相关产品推荐
相关产品推荐

