我在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对象,我引用相关的内联对象。据我所知,我无法做到这一点。
有没有更好的方法来组织这个?
答案 0 :(得分:0)
请注意,markdown允许通过隧道传输HTML。如果你这样做,你可能想要降价(html,safe_mode ='escape')如果你允许不受信任的来源插入.body_markdown,你需要通过像漂白剂这样的东西来清理那个输入:http://pypi.python.org/pypi/bleach