Могу ли я сделать это внутри шаблона или это нужно сделать в коде Python?
У меня есть переменная, которая может содержать символы da‹ngero›u&s. Как мне избежать этого в jinja2?
Могу ли я сделать это внутри шаблона или это нужно сделать в коде Python?
У меня есть переменная, которая может содержать символы da‹ngero›u&s. Как мне избежать этого в jinja2?
e.g.
{{ user.username|e }}
Пропустить через фильтр |e
Jinja: Документация дизайнера шаблонов -> Экранирование HTML
Вы также можете указать среде автоматически экранировать все:
e = Environment(loader=fileloader, autoescape=True)
примечание: в jinja1 это auto_escape
Если вы хотите избежать html в своей программе, вы можете сделать это следующим образом (пример):
>>> import jinja2
>>> jinja2.__version__
'2.6'
>>> a
'<script>alert("yy")</script>'
>>> jinja2.escape(a)
Markup(u'<script>alert("yy")</script>')
>>> str(jinja2.escape(a))
'<script>alert("yy")</script>'
Flask имеет встроенный фильтр tojson
:
http://flask.pocoo.org/docs/templating/#standard-filters а>
Вы можете выполнить проверку строки и заменить ее соответствующими экранированными символами.
Например: string=I am a special character <
Сделайте следующее:
string.replace("<","< ;")
Обратите внимание, что в вашем коде пробел между t и ; был устранен. Невозможно удалить это здесь, так как вместо этого будет отображаться ‹: P
Затем используйте jinja2, чтобы распечатать отформатированную строку. ‹ должен появиться на вашем дисплее.