2013-09-29 21 views
1

我有一個功能,自動替換問題ID來鏈接:Flask + python + jinja2:我該如何部分地用html代碼替換模板參數?

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) 

然後{{文本}}傳遞給模板。

它的工作原理,但有一個副作用 - 所有類型的HTML在此後的文本中未轉義。 有沒有什麼辦法可以避免html轉義只爲鏈接?

回答

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 

能否請您解釋一下我如何能做到用這個「保險箱」功能是一回事嗎?

+0

我已經更新了我的答案。基本思想是safe關鍵字關閉jinja2模板中html的自動轉義。 – AlexLordThorsen