Как сделать так, чтобы Django *не* разбирал "{{переменная}}" при использовании Jsrender?

Я создаю Django шаблон, который будет использовать jsrender для создания динамических Javascript шаблонов для html кода.

Однако я обнаружил, что когда я помещаю шаблон Jsrender в свой код, Django выходит из себя, потому что Django разбирает все, что находится между {{ и }} как переменную, а Jsrender использует это для своих собственных переменных. Например, шаблон в Jsrender может выглядеть следующим образом:

    <script id="headerTemplate" type="text/x-jsrender">
        <h1>{{:label}}</h1>
    </script>

Django видит {{:label}} и пытается разобрать его, что приводит к ошибке.

Существует ли блок Django, который я могу вызвать и который заставит Django не разбирать любой текст внутри него? Или каким-либо другим способом, чтобы избежать символа {?

Вы можете включить {% verbatim %} … {% endverbatim %} тег шаблона [Django-doc]:

{% verbatim %}
    <script id="headerTemplate" type="text/x-jsrender">
        <h1>{{:label}}</h1>
    </script>
{% endverbatim %}

Таким образом, двойные фигурные скобки будут отображаться, а не интерпретироваться.

Вы можете выбрать альтернативные разделители в JsRender, чтобы избежать конфликта с разделителями Django.

https://www.jsviews.com/#settings/delimiters

Например:

$.views.settings.delimiters("<%", "%>");

изменит синтаксис тега на <%...%>.

Вернуться на верх