@bamond

Как убрать экранирование?

День добрый. Из базы данных выводится вся страница включая {% for i in data %} {% endfor %} {{ data }}
проблема в том что данные переменных и лупы выводятся как простой текст....
{% autoescape off %} - выключено...

подскажите пожалуйста, как сделать так что бы переменные и лупы выводились как они должны быть , а не как текст

Спасибо
  • Вопрос задан
  • 811 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Данные из базы - это данные в контексте, а контекст шаблонизатором не разбирается. Придётся писать для этого template tag:

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

register = template.Library()

class RenderNode(template.Node):
    def __init__(self, content):
        self.content = content
    
    def render(self, context):
        try:
            self.content = template.resolve_variable(self.content, context)
            return template.Template(self.content).render(template.Context(context, autoescape=False))
        except template.TemplateSyntaxError as e:
            return mark_safe("<strong>Template error: There is an error one of this page's template tags: <code>%s</code></small>" % e.message)


@register.tag(name='render')
def render_django(parser, token):
    content = token.split_contents()[-1]
    return RenderNode(content)
render_django.is_safe = True


А потом в шаблоне его вызывать

{% render flatpage.content %}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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