Как удалить метки, которые уже были отфильтрованы? - PullRequest
2 голосов
/ 03 марта 2011

У меня есть эта модель, созданная третьей стороной, и мне нужно получить доступ к этой модели и удалить теги, я подумал, что мог бы просто использовать фильтр | removetag, но кажется, что теги предварительно экранированы для модели, любойУ меня есть совет, как еще можно удалить эти теги со стороны шаблона?

1 Ответ

1 голос
/ 03 марта 2011

Это зависит от того, что вы подразумеваете под «уже отфильтрованным»; Можете ли вы предоставить пример строки?

Помогает ли запуск через |safe|removetags?

Полагаю, вы также знаете, что можете использовать |striptags, если хотите удалить все теги.

РЕДАКТИРОВАТЬ: Пример загруженных данных.

ОК, если ваши строки выглядят так, вам нужно создать обратную сторону фильтра "escape" django - например, в одном из ваших приложений создайте модуль templatetags, создайте unescape.py:

from django import template
from django.utils.safestring import mark_safe
from django.utils.encoding import force_unicode

register = template.Library()

@register.filter
def unescape(value):
    return mark_safe(force_unicode(value).replace('&lt;', '<').replace('&gt;', '>').replace('&quot;', '"').replace('&#39;', "'").replace('&amp;', '&'))

Не забудьте также создать __init__.py в каталоге templatetags, а затем перезапустить сервер, чтобы он был зарегистрирован.

Тогда в ваших шаблонах:

{% load unescape %}
...
{{ example_string|unescape }}

См. http://docs.djangoproject.com/en/dev/howto/custom-template-tags/ для получения более подробных инструкций, если вы этого еще не сделали.

В качестве альтернативы вы можете просто запустить это на своих моделях в коде Python, но ваш вопрос задан по поводу "стороны шаблона".

...