@YraganTron

Как отобразить данные из бд, где присутствует html разметка, в html(Django)?

У меня имеется форма, через которую пользователи отправляют сообщения. Чтобы в посте отправить сообщение конкретному пользователю, в форму вставляется опр. текст, который в последствии во вьюхе обноситься нужными мне тегами с нужными мне атрибутами(далее все это используется в js). Сначала я заюзал safe, но немного поразмыслив я понял, что таким образом пользователи могут отрисовать что захотят. Мне же нужно отрисовать конкретно мои теги, а все остальное оставить за бортом, если вдруг оно имеется. Я так понял, что нужно писать свой фильтр, но не до конца понимаю, что именно он должен делать.
  • Вопрос задан
  • 308 просмотров
Решения вопроса 1
alexhouse
@alexhouse
Full Stack Web Developer Python and Django
Сперва вырезаешь все ненужное из сообщения, потом фильтром добавляешь нужные тебе теги.

Вот пример как работать с текстом с помощью фильтров:

from django import template
from django.utils.html import conditional_escape
from django.utils.safestring import mark_safe

register = template.Library()

@register.filter(needs_autoescape=True)
def initial_letter_filter(text, autoescape=True):
    first, other = text[0], text[1:]
    if autoescape:
        esc = conditional_escape
    else:
        esc = lambda x: x
    result = '<strong>%s</strong>%s' % (esc(first), esc(other))
    return mark_safe(result)


Подробнее про фильтры: djbook.ru/rel1.9/howto/custom-template-tags.html
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы