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, чтобы предотвратить кодирование - это должно решить вашу проблему.
В Django есть метод mark_safe, который отлично работает для html в ячейках таблицы администрирования django, который обычно удаляет html-теги.
Из документации:
mark_safe(s)
.
Явно пометить строку как безопасную для целей вывода (HTML). Возвращаемый объект может использоваться везде, где уместна строка.
Может вызываться несколько раз для одной строки.
Может также использоваться в качестве декоратора.
Для создания фрагментов HTML обычно следует использовать django.utils.html.format_html().
Я не уверен в вашем случае, но это стоит попробовать, так же как и django.utils.html.format_html, как указано выше.