Django 1.11: совершенно странная проблема с выходом из HTML - PullRequest
0 голосов
/ 11 сентября 2018

Я перемещаю кодовую базу в Django 1.11, и некоторые из моих виджетов теперь отображают HTML, как будто они экранированы от HTML:

<h2>Hello from Foo</h2>

Я просматривал документы о autoescapeи safe, без радости.Поэтому я решил вернуться к основам шаблонов.Это буквально единственный текст в моем файле шаблона:

<h2>Hello from Foo</h2>

И все же браузер отображает тег как текст ascii, а не как команду форматирования для браузера. enter image description here

Как это может происходить?Нет никакого расширения-переменной или autoescape где-нибудь рядом с этим, и нет simple_tag, который теперь по умолчанию имеет значение autoescape.Но какой-то агент применяет к этому коду HTML-код.

Я сбит с толку.

1 Ответ

0 голосов
/ 14 сентября 2018

У меня была проблема, которая звучит почти так же, как ваша.

Имел тег шаблона, который после перехода на django 1.11 начал возвращать содержимое, экранированное HTML.

Попытался воспроизвести проблему на предыдущей версии Django, которая была у меня, которая была 1.8 и не повезло.

В конце я добавил mark_safe из django.utils.safestring в оператор return, и это решило мою проблему.Также перепробовал все варианты добавления фильтров safe, escape и тегов autoescape, но с этим не повезло.

РЕДАКТИРОВАТЬ: только что узнал об этом: https://docs.djangoproject.com/en/1.10/topics/templates/#django.template.backends.django.DjangoTemplates

Похоже, что с Django 1.10 были введены опции autoescape и по умолчанию True для DjangoTemplates.Похоже, что это может быть причиной описанных проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...