Можете ли вы перейти в оболочку django и посмотреть, какой текст записан в object.video.description?
Как / где video.description определяется как строка html (я предполагаю, что <
уже экранирован в <
в этой точке и, следовательно, безопасно не поможет),Пометка как безопасная предотвращает преобразование django <
в <
непосредственно перед отображением в шаблоне;но не преобразует строку, содержащую <
, в <
.
Если строка изначально сохранена с <
s и >
s, вы можете преобразовать их в <
и >
простой заменой Python где-нибудь в вашей обработке строк.Например, по вашему мнению, сделайте что-то вроде:
htmlCodes = (('&', '&'),
('<', '<'),
('>', '>'),
('"', '"'),
("'", '''),)
def unescape(some_html_str):
for c, html_code in htmlCodes:
some_html_str = some_html_str.replace(html_code, c)
return some_html_str
и затем не забудьте удалить строку в вашем представлении, прежде чем поместить ее в контекст (и все же не забывать пометить ее как безопасную).См. Как выполнить декодирование / кодирование HTML с использованием Python / Django?
Также может быть лучше / проще использовать mark_safe
(from django.utils.safestring import mark_safe
) в ваших представлениях, чтобыубедитесь, что только безопасные строки помечены как безопасные, вместо того чтобы ваш шаблон всегда отображал что-то безопасное.