Как управлять кавычками, отправленными на HTML-страницу из Flask? [Дубликат]

Разделитель может быть плохой идеей для некоторых языков, таких как иврит или японский. Попробуйте следующее:

// Array of Strings
let array: [String] = ["red", "green", "blue"]
let arrayAsString: String = array.description
let stringAsData = arrayAsString.data(using: String.Encoding.utf16)
let arrayBack: [String] = try! JSONDecoder().decode([String].self, from: stringAsData!)

Для других типов данных соответственно:

// Set of Doubles
let set: Set<Double> = [1, 2.0, 3]
let setAsString: String = set.description
let setStringAsData = setAsString.data(using: String.Encoding.utf16)
let setBack: Set<Double> = try! JSONDecoder().decode(Set<Double>.self, from: setStringAsData!)
96
задан famousgarkin 20 March 2014 в 18:54
поделиться

2 ответа

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

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

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

79
ответ дан Armin Ronacher 22 August 2018 в 21:02
поделиться
  • 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

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

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

Пример:

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

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