Django模板变量传递失败求助:{{patient}}无法渲染显示
Django模板变量无法渲染的排查与解决
针对你遇到的模板中{{patient}}无法显示值abcde的问题,结合提供的代码,主要排查方向和解决办法如下:
核心问题:访问路径错误触发了错误视图
你的urls.py最后一行的正则规则re_path(r'^.*\.*', views.pages, name='pages')会匹配所有包含点(.)的路径。如果你的访问路径是/examtable.html(带.html后缀),会触发pages视图而非exam_table视图——而pages视图没有传递patient变量,自然模板中该字段为空。
解决办法
直接访问正确的路径:/examtable(不带.html后缀),此时会匹配path('examtable',views.exam_table,name='examtable')规则,触发正确的视图并传递patient变量。
其他排查方向
如果访问正确路径后仍有问题,可检查以下几点:
- URL正则优化:修改最后一行的正则为
r'^.*\..*$',明确只匹配带后缀的文件路径,避免无后缀路径被意外匹配。 - 模板正确性:
- 确认
examtable.html在Django配置的templates目录下,路径无误。 - 检查
{{patient}}拼写是否完全一致(Django模板变量区分大小写)。 - 若模板继承了基础模板,确保变量所在区块未被父模板覆盖。
- 确认
- 缓存清理:清空浏览器缓存或使用无痕模式访问,避免旧页面缓存影响显示。
验证正确代码示例
你的views.py和模板代码本身是正确的:
- views.py中
context传递正确:
def exam_table(request): context = {'patient': 'abcde'} return render(request, 'examtable.html', context)
- 模板中变量写法正确:
<div class="row d-flex align-items-center"> <div class="col-9"> <h3 class="f-w-300 d-flex align-items-center m-b-0"> <i class="feather icon-arrow-up text-c-green f-30 m-r-10"></i>$ <p>{{patient}}</p></h3> </div> </div>
内容的提问来源于stack exchange,提问作者cmoris
相关产品推荐
相关产品推荐

