2013-02-12 69 views
0

我在django管理員中使用WMD編輯器。我寫了一個簡單的解析器(主要是正則表達式),所以我可以在markdown中捕獲特定的標籤並相應地插入HTML。我的問題是我需要訪問Django對象本身。降價解析代碼應該放在Django應用程序中?

目前我重寫Model.save(),並呼籲Model.process_markdown()

def process_markdown(self): 
    p = re.compile("\[\[\s*(?P<tag>image):(?P<id>[\d,]+)\s*\]\]") 
    processed = p.sub(partial(render_markdown, self), self.body_markdown) 
    return markdown.markdown(processed) 

然後將結果保存到Model.rendered場在我的模型。如果您注意到我有一個render_markdown函數被調用。這存儲在我的應用程序中的一個名爲util.py的文件中,並執行所有實際工作。

一切正常,但這似乎應該有一個更好的方法。我知道我可以將自定義標籤綁定到markdown,並做到這一點更清潔,但我必須能夠訪問django對象,並且我參考相關的內聯對象。據我所知,我沒有辦法做到這一點。

有沒有更好的方法來組織這個?

回答

0

請注意,markdown允許HTML通過隧道。如果你這樣做,你可能需要markdown(html,safe_mode ='escape')如果你允許不可信任的源插入.body_markdown,你需要通過類似漂白劑的方式來清理輸入:http://pypi.python.org/pypi/bleach

+0

唯一的人員額是值得信賴的員工,所以幸運的是,我不必消毒到那個程度。謝謝你的幫助! – 2013-02-13 15:31:46

相關問題