1

我有一个功能可以自动将问题 ID 替换为链接:

def addlinks(text):
    from flask import Markup
    idlist = getallissueids()
    for issueid in idlist:
        text = text.replace( issueid, "<a href=/browse/" + issueid +">" + issueid + "</a>")
    return Markup(text)

然后 {{text}} 被传递给模板。

它有效,但有一个副作用 - 此后所有类型的 html 在文本中都未转义。有什么办法可以避免 html 只为链接转义?

4

2 回答 2

2

对文本使用安全过滤器。它在模板中看起来像这样,

{{ text |safe }}

safe 将声明在此文本中找到的 html 可以安全呈现,因此不必转义。

模板上的烧瓶页面在教程的一半左右简要讨论了安全过滤器。安全过滤器只是说此文本中的所有内容都是安全的并关闭 html 转义。

于 2013-09-30T06:23:48.420 回答
0

这就是我在这个晚上找到的workaroung:

def addlinks(text):
    from flask import Markup
    idlist = getallissueids()
    for issueid in idlist:
        parts = text.split(issueid)
        text = Markup("<a href=/browse/" + issueid +">" + issueid + "</a>").join(parts)     
    return text

您能否解释一下我如何使用这个“安全”功能做同样的事情?

于 2013-09-30T08:58:39.647 回答