markdown解析代码应该放在Django应用程序中的哪个位置?

时间:2013-02-12 18:01:31

标签: python django markdown wmd-editor

我在django admin中使用WMD编辑器。我编写了一个简单的解析器(主要是regex),因此我可以在markdown中捕获特定的标记并相应地插入HTML。我的问题是我需要访问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对象,我引用相关的内联对象。据我所知,我无法做到这一点。

有没有更好的方法来组织这个?

1 个答案:

答案 0 :(得分:0)

请注意,markdown允许通过隧道传输HTML。如果你这样做,你可能想要降价(html,safe_mode ='escape')如果你允许不受信任的来源插入.body_markdown,你需要通过像漂白剂这样的东西来清理那个输入:http://pypi.python.org/pypi/bleach