Django 3.2基础模板出现'raw'无效块标签报错问题咨询
Django 3.2
raw标签报错原因及解决方案 报错根因
- Django 3.2原生模板系统不存在内置的
raw块标签,该语法属于其他模板引擎(如Jinja2、静态站点生成器模板)或第三方扩展的功能,直接在Django原生模板中使用必然会触发「未注册/加载标签」的报错。 - 网传的
{% block raw %}修改方案完全是误导:block是Django模板继承的专属语法,作用是定义可被子模板覆写的块区域,该写法本质是声明了一个名为raw的继承块,和你预期的「不解析模板变量」功能毫无关联。而Django规定同一模板中不能重复定义同名块,才会触发「only one raw block allowed」报错。 - 若替换为Django内置的
{% verbatim %}标签仍报错,大概率是拼写错误、标签未正确闭合,或者父模板存在语法冲突;但你的场景下完全不需要使用这类标签。
修复方案
你添加raw标签属于多余操作:Django模板中直接使用{{ 变量名 }}语法就会自动渲染对应变量的值,不需要额外包裹标签,直接删除代码中所有的{% raw %}和{% endraw %}标记即可正常运行。
修改后的核心代码示例:
<img src="{{product.image}}" class="img-fluid" style="padding: 30px" alt="{{product.title}}" /> <div class="card-body"> <h5 class="card-title">{{product.title}}</h5> <p class="card-text"> A beautiful {{product.title}} for ${{product.price}}. </p> <a href="/" class="btn btn-primary">Buy Now</a> </div>
补充说明:仅当你需要在模板中输出
{{ }}、{% %}这类Django模板语法字面量(比如前端模板代码片段)时,才需要使用{% verbatim %}标签包裹对应内容。
内容的提问来源于stack exchange,提问作者E Cheadle
相关产品推荐
相关产品推荐

