使用Jinja转义HTML时出错

时间:2016-05-23 21:05:24

标签: python html regex jinja2

我有以下正则表达式搜索文本和前缀并附加HTML' a'匹配子字符串的标签。它成功地完成了我想要的一切,除非通过使用' safe'来转义HTML。由Jinja过滤。正则表达式如下:

re.sub('(^#\w*|(?<=\s)#\w*)', 
        r'<a href="{{ url_for(\'main.tag\', tagname=tag) }}">\1</a>', 
        'here is some #text with a #hashtag')

上面应该出现here is some #text with a #hashtag

其中&#39; #text&#39;和&#39; #hashtag&#39;是可点击的链接。然而,通过使用Jinja的“安全”#39;过滤它出来

"here is some "<a href="{{ url_for(\'main.tag\', tagname=tag) }}">#text</a>" with a "<a href="{{ url_for(\'main.tag\', tagname=tag) }}">#hashtag</a>

有几点需要注意:

  • 不匹配的子字符串包含在引号中
  • html链接应该<a href="/tag/hashtag">#hashtag<a>而不是<a href="{{ url_for(\'main.tag\', tagname=tag) }}">#hashtag</a>

我确信它与Jinja正在处理的字符串有关。我对如何转义字符串中的特定字符并将其传递给Jinja进行处理并不自信。

我逃脱了人物的错误吗?思考?提前谢谢。

0 个答案:

没有答案