在Django中限制Markdown
我在用Django开发的博客评论系统中使用Markdown。
我想限制可以接受的格式,只允许一些基本的格式(比如加粗、斜体、链接和代码)。
我该怎么设置Markdown来实现这个呢?
如果用Markdown不行,有没有其他的替代方案?
附注:我使用的是Django自带的'app django.contrib.markup'。
这是我在模板中使用的实际代码:
<div class="comment-content>
<p>
{% load markup %}
{{ comment.comment|markdown:"safe" }}
</p>
</div>
2 个回答
2
你可以使用Bleach这个工具,写一个模板标签来去掉你不想要的标签。
比如说,如果你只想保留粗体和斜体:
@register.filter
def limit_markdown(comment):
comment = bleach.clean(comment, tags=['b', 'i', 'em'], strip=True)
return comment
然后在你的模板中,你可以这样使用它:
{{ comment.comment|markdown|limit_markdown|safe }}
2
这要看你使用的是哪个markdown插件,网上有很多种,随便搜索一下就能找到。
你需要在线查找你正在使用的那个插件的文档,或者看看它的源代码,如果它是开源的,你也可以根据需要进行修改。或者,你也可以找一个支持你想要功能的其他插件。
补充:看起来django使用的是python-markdown(http://www.freewisdom.org/projects/python-markdown/),从我简单查看的情况来看,它似乎不支持只指定某些特定的格式选项。不过,它似乎很容易扩展,所以如果你写一个扩展,就可以像这样在django中使用:
{{ string|markdown:"extension_name,extension2,etc..." }}