阻止模板引擎解析标签内的内容

{% verbatim %} 标签用于阻止模板引擎解析标签内的内容

主要作用

1. 保护 JavaScript 代码

当 JavaScript 代码中包含与 Django 模板语法冲突的字符时:

<script>
{% verbatim %}
    // 这里的 {{ }} 不会被 Django 解析
    var user = {{ name }};        // JavaScript 对象
    var message = "{{ text }}";   // JavaScript 字符串
{% endverbatim %}
</script>

2. 避免语法冲突

防止 Django 将其他模板语法(如 Vue.js、Angular 等)误解析:

<div id="app">
{% verbatim %}
    <!-- Vue.js 模板语法不会被 Django 处理 -->
    {{ message }}
    <div v-if="seen">现在你看到我了</div>
{% endverbatim %}
</div>

使用示例

不使用 verbatim(有问题):

<script>
// Django 会尝试解析 {{ }},可能导致错误
var data = {{ json_data }};  // 如果 json_data 不存在会报错
</script>

使用 verbatim(推荐):

<script>
{% verbatim %}
    // 安全地使用 {{ }} 语法
    var template = "{{ name }} - {{ age }}";
    var vueApp = new Vue({
        data: {
            message: 'Hello Vue!'
        }
    });
{% endverbatim %}
</script>

注意事项

  • verbatim 块内的所有模板标签和变量都不会被处理
  • 常用于 JavaScript 框架集成
  • 保持前端模板语法与 Django 模板共存

这是处理模板语法冲突时非常有用的工具。