Отображение переменной шаблона в виде HTML



Я использую интерфейс "сообщения" для передачи сообщений пользователю следующим образом:



request.user.message_set.create(message=message)


Я хотел бы включить HTML в мой {{ message }} переменная и визуализировать его, не экранируя разметку в шаблоне.

589   6  

6 ответов:

если вы не хотите, чтобы HTML экранировался, посмотрите на и autoescape tag

фильтр: {{ myhtml |safe }}
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#safe

теги: {% autoescape off %}{{ myhtml }}{% endautoescape %} http://docs.djangoproject.com/en/dev/ref/templates/builtins/#autoescape

использовать autoescape чтобы отключить экранирование HTML:

{% autoescape off %}{{ message }}{% endautoescape %}

Если вы хотите сделать что-то более сложное с вашим текстом, Вы можете создать свой собственный фильтр и сделать некоторую магию, прежде чем возвращать html. С файлом templatag выглядит так:

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

register = template.Library()

@register.filter
def do_something(title, content):

    something = '<h1>%s</h1><p>%s</p>' % (title, content)
    return mark_safe(something)

тогда вы можете добавить это в свой файл шаблона

<body>
...
    {{ title|do_something:content }}
...
</body>

и это даст вам хороший результат.

вы можете отобразить шаблон в своем коде следующим образом:

from django.template import Context, Template
t = Template('This is your <span>{{ message }}</span>.')

c = Context({'message': 'Your message'})
html = t.render(c)

посмотреть Django docs для получения дополнительной информации.

самый простой способ-использовать safe фильтр:

{{ message|safe }}

Проверьте документация Django для безопасного фильтра для получения дополнительной информации.

нет необходимости использовать фильтр или тег в шаблон. Просто используйте format_html () для перевода переменной в html, и Django автоматически отключит для вас переменную.

format_html("<h1>Hello</h1>")

проверьте здесь https://docs.djangoproject.com/en/1.9/ref/utils/

Comments

    Ничего не найдено.