0

我在 django 管理员中使用 WMD 编辑器。我编写了一个简单的解析器(主要是正则表达式),因此我可以在 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中,并完成所有实际工作。

一切正常,但这似乎应该有更好的方法。我知道我可以绑定到自定义标签的降价并做到这一点更清洁,但我必须能够访问 django 对象,并且当我引用相关的内联对象时。据我所知,我没有办法做到这一点。

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

4

1 回答 1

0

请注意,markdown 允许通过隧道传输 HTML。如果您这样做,您可能需要 markdown(html, safe_mode='escape') 如果您允许不受信任的来源插入 .body_markdown,您将需要通过类似漂白剂的方式清理该输入:http://pypi.python。 org/pypi/漂白剂

于 2013-02-12T23:36:15.797 回答