Отображать значение переменной как html на шаблоне Flask [дубликат]

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
108
задан famousgarkin 20 March 2014 в 18:54
поделиться

3 ответа

Вы также можете объявить его безопасным HTML из кода:

from flask import Markup
value = Markup('<strong>The HTML String</strong>')

Затем передать это значение в шаблоны, и им не нужно |safe его.

206
ответ дан Armin Ronacher 19 August 2018 в 11:54
поделиться
  • 1
    существует ли разметка в jinja2? – iamgopal 16 July 2010 в 17:59
  • 2
    Разметка - класс Jinja2, да. Он реализует общий интерфейс, поддерживаемый многими библиотеками python (к сожалению, не Django). Вы также можете использовать безопасный пакет разметки, который реализует один и тот же объект: pypi.python.org/pypi/MarkupSafe – Armin Ronacher 18 July 2010 в 10:02
  • 3
    Это лучше всего подходит для написания настраиваемых фильтров, когда фильтр должен передать некоторую разметку шаблону. – erjiang 25 August 2014 в 19:14
  • 4
    привет @ Армин Роначер, не могли бы вы объяснить больше и привести пример? Благодарю. – Samoth 22 February 2017 в 10:01
  • 5
    Я имею в виду, например, у меня есть файл с именем userHome.html, и я хотел бы использовать return render_template('userHome.html'), но он не отображается правильно, и все превращаются в html-сущности в моей хром-консоли. – Samoth 22 February 2017 в 10:15
  • 6
    В теге trans это должно использоваться как {% trans something=something|safe %}A {{something}} B{% endtrans %} – Kangur 26 March 2017 в 21:30
  • 7
    это могло бы избавить меня от разочарования, если бы я знал это раньше (и это спасет меня еще больше часов). Благодаря! – PDiracDelta 14 April 2017 в 12:01
  • 8
    Великолепное решение! Благодарю. Это спасло мой день. – Lavande 5 March 2018 в 05:36
221
ответ дан Armin Ronacher 31 October 2018 в 00:10
поделиться

Из раздела jinja docs HTML Escaping :

Когда включено автоматическое экранирование, все экранируется по умолчанию, за исключением значений, явно помеченных как безопасных. Они могут быть отмечены приложением или шаблоном с помощью безопасного фильтра.

Пример:

 <div class="info">
   {{data.email_content|safe}}
 </div>
8
ответ дан xgord 19 August 2018 в 11:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: