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

    {% 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 模板共存

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