Pergunta

Como faço para uma contribuição não manittada perigosa html-escape no Jinja2?

Posso fazer isso dentro do modelo ou deve ser feito no código Python?

Eu tenho uma variável que pode conter Dau003Cngero> u & s chars. Como faço para escapar em Jinja2

Foi útil?

Solução

por exemplo

{{ user.username|e }}

Vá através do |e filtro

Jinija: documentação do designer de modelos -> Filtros construídos: Escape

Outras dicas

Você também pode dizer ao meio ambiente para criar tudo:

e = Environment(loader=fileloader, autoescape=True)

Nota: em Jinja1, isso é auto_escape

Se você deseja escapar do HTML em seu programa, pode fazer assim (exemplo):

>>> import jinja2
>>> jinja2.__version__
'2.6'
>>> a
'<script>alert("yy")</script>'
>>> jinja2.escape(a)
Markup(u'&lt;script&gt;alert(&#34;yy&#34;)&lt;/script&gt;')
>>> str(jinja2.escape(a))
'&lt;script&gt;alert(&#34;yy&#34;)&lt;/script&gt;'

Flask tem um embutido tojson filtro:

http://flask.pocoo.org/docs/templating/#standard-filters

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top