Теги шаблона jquery конфликтуют с шаблоном Django! - PullRequest
21 голосов
/ 26 октября 2010

Сегодня я пытаюсь поиграть с операторами 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, что не сможет его проанализировать.

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


updated:

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

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

Ответы [ 5 ]

13 голосов
/ 26 октября 2010

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

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

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

2 голосов
/ 06 декабря 2010

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

https://github.com/nje/jquery-tmpl/issues#issue/17 - Редактировать: Старый репо

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

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

0 голосов
/ 18 декабря 2012

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

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

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

0 голосов
/ 24 сентября 2011

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

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

0 голосов
/ 25 июля 2011

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

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

в мой html-файл.

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

Недопустимый тег блока:'raw'

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

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

...