Django eventstream / channels return HTML

У меня есть рабочее приложение, в котором я использую django-eventstream для показа информационных/ошибочных сообщений пользователям. Все работает хорошо с send_event():

send_event("ok_message", "message_ok", msg)
send_event("error_message", "message_error", msg)

но на самом деле я хочу отправить некоторые html непосредственно на фронтенд. Возможно ли это?

send_event("ok_message", "message_ok", {"html": "<h1>test</h1>"})

В функции send_event есть опция json_encode, которую можно установить на False, чтобы предотвратить кодирование - это должно решить вашу проблему.

Код: https://github.com/fanout/django-eventstream/blob/b52c7e494afa93ada9abc36b86c724d90f5690b9/django_eventstream/eventstream.py#L14

В Django есть метод mark_safe, который отлично работает для html в ячейках таблицы администрирования django, который обычно удаляет html-теги.

Из документации:

mark_safe(s)
Явно пометить строку как безопасную для целей вывода (HTML). Возвращаемый объект может использоваться везде, где уместна строка.
Может вызываться несколько раз для одной строки.
Может также использоваться в качестве декоратора.
Для создания фрагментов HTML обычно следует использовать django.utils.html.format_html().

.

Я не уверен в вашем случае, но это стоит попробовать, так же как и django.utils.html.format_html, как указано выше.

Вернуться на верх