Теги шаблона jquery конфликтуют с шаблоном Django!

Сегодня я пытаюсь поиграть с операторами jquery-tmpl {{if}} и ​​{{else}}.

<script id="mission-dialog" type="text/x-jquery-tmpl">
    <h3>${name}</h3>
    <p>${description}</p>
    <ul>
        {{each(i,cond) conditions.data}}
        <li>
            <img src="${cond.image}"/>
            <h4>${cond.name}</h4>
            <p class="status">${cond.status.value}/${cond.status.max}</p>
        </li>
        {{/each}}
    </ul>
</script>

Но, как вы знаете, {{ }} также зарезервировано для шаблона django. Таким образом, django выдает TemplateSyntaxError, который не может его проанализировать.

Как я могу решить эту проблему?


обновлено:

Я нашел рабочую реализацию пользовательского тега ‹% raw %> (GPL) отсюда.

http://www.holovaty.com/writing/django-two-phased-rendering/


person Ray Yun    schedule 26.10.2010    source источник


Ответы (5)


Используйте тег шаблона templatetag для отображения скобок:

{% templatetag openvariable %}each(i,cond) conditions.data{% templatetag closevariable %}

Это немного неудобно, поэтому для Django 1.3 был предложен тег шаблона raw.

person Daniel Roseman    schedule 26.10.2010
comment
Спасибо Даниэль! Но это слишком сложно, как вы сказали. Я должен ждать Django 1.3 ... :) - person Ray Yun; 26.10.2010
comment
Или поместите коды jquery-template не в html, а где-нибудь в коде и передайте его шаблону.. :( - person Ray Yun; 26.10.2010
comment
В моем случае клиентская CMS применяет шаблоны django в моих файлах js. Конфликты на самом деле настолько же глубоки, что и объявление самого механизма шаблонов jQuery. - person CharlesTWall3; 18.12.2012

Здесь упоминается несколько решений:

https://github.com/nje/jquery-tmpl/issues#issue/17 — Изменить: старый репозиторий

https://github.com/jquery/jquery-tmpl/issues/#issue/74

Мой любимый тег шаблона {% verbatim %} позволяет вам создавать шаблоны jQuery из шаблонов Django.

person Colin Sullivan    schedule 06.12.2010

Я использую Django 1.3 и добавляю

{% raw %} this should be ignored by django's template framework {% endraw %}

в мой html-файл.

Сервер возвращается с:

Недопустимый тег блока: «сырой»

Также в документах я не могу найти информацию об этом теге, о котором вы говорите.

https://docs.djangoproject.com/en/1.3/ref/templates/builtins/

person Jonas Geiregat    schedule 25.07.2011
comment
Необработанный тег может быть еще не включен в django 1.3. Поэтому вам нужно включить пользовательские коды тегов отсюда: holovaty.com/writing/ django-two-phased-рендеринг - person Ray Yun; 26.07.2011

Здесь есть отличная информация об использовании шаблонов Django с использованием icanhaz, но я думаю, что это достаточно похоже на шаблоны JQuery.

http://tothinkornottothink.com/post/4282971041/using-jquery-templating-icanhaz-js-with-django

person Dantalion    schedule 24.09.2011

Я обнаружил, что значения по умолчанию полезны, если тег verbatim не поддерживается. Выглядит так:

{{ some_undefined_variable|default: '....here goes the subject template....'}}

PS. Примечание для пользователей ChicagoBoss, которые не поддерживают тег verbatim в ErlyDTL.

person Aleksandr Vinokurov    schedule 18.12.2012