Django模板中如何避免{{sometext}}被执行后渲染为空字符串
Django模板中原样展示{{ }}语法的实现方法
你遇到的空值输出问题,本质是Django模板引擎默认会将所有{{ ... }}格式的内容识别为可解析变量。由于你的模板上下文中没有传入sometext对应的值,引擎会把这段变量标签替换为空字符串,最终就形成了只剩两个空引号的段落。要实现{{}}语法不被引擎执行、原样展示,可直接使用以下3种内置方案:
- 方案1:使用内置
verbatim标签
这是最简洁、最常用的实现方式,被该标签包裹的所有内容都会被引擎跳过解析,直接原样输出,适配Django 1.5及以上版本,无需安装第三方依赖:{% verbatim %} <p>"{{sometext}}"</p> {% endverbatim %} - 方案2:使用
templatetag标签手动生成大括号分隔符
该方案适配Django 1.5之前的低版本,通过内置标签主动输出模板语法的固定分隔符,让引擎无法识别出完整的变量结构,从而触发不了解析逻辑:
渲染后会直接输出完整的<p>"{% templatetag openvariable %}sometext{% templatetag closevariable %}"</p>"{{sometext}}"文本,不会对内容做任何解析替换。 - 方案3:通过字符串拼接拆分完整变量结构
不需要引入额外标签逻辑,通过普通字符串取值拆分原本连续的大括号结构,让引擎无法匹配到标准的变量解析规则:
原理是引擎会把<p>"{{ '{{' }}sometext{{ '}}' }}"</p>{{ '{{' }}识别为普通字符串取值,输出两个连续的左大括号;同理把{{ '}}' }}识别为普通字符串取值,输出两个连续的右大括号,中间的sometext作为纯文本渲染,最终组合为完整的"{{sometext}}"内容。
内容的提问来源于stack exchange,提问作者Wasimul Vari Sami
相关产品推荐
相关产品推荐

