2013-02-12 68 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

相关问题