码迷,mamicode.com
首页 > 其他好文 > 详细

Flask学习记录之MarkDown编辑文本

时间:2015-04-22 23:58:20      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:

为了让网页支持markdown编辑文本,使用如下了4个库

  • PageDown : 在前端提供一个可以实时将markdown内容转换成html文本进行效果预览的编辑器
  • Flask-PageDown: 这个库将PageDown集成到Flask-Wtf库中,更方便使用
  • MarkDown: 将MarkDown标记文本转换为Html文本
  • Bleach: 基于白名单清除Html文本中不安全的标签

 

PageDown的使用

和其他类库相识,需要初始化

from flask.ext.pagedown import PageDown

pageDown = PageDown(app)

因为PageDown是在前端你用js提供的编辑器,所以与moment库类似需要在模版文件中包含他,如下:

{{ pagedown.include_pagedown() }}

flask-PageDown 将PageDown库集成到了Flask-Wtf中,所以可以直接将他当作wtforms的一个字段来使用,并且wtf.quick_form()也能很好的处理他的显示

from flsk.ext.pagedown.fields import PageDownField

class PostForm(Form):
    body = PageDownField(u"微博内容", validators=[validators.DataRequired()])
    submit = SubmitField(u提交)

MarkDown的使用

MarkDown可以将MarkDown标记文本转换成Html文本存放到数据库中,使用很简单,如下:

from markdown import markdown

html_text = markdown(markDown_text, output_format = html)
#第一个参数是markdown原文本, 第二个参数传入转换的类型

Bleach的使用

bleach是一个基于白名单的html过滤器,用他将不安全的标签过滤掉,以保证安全 Doc

过滤标签名

import bleach

#允许的标签
allow_tags = [a, abbr, acronym, b, blockquote, code, em,i,li, ol, pre, strong, ul, h1, h2, h3, p]

cleaned_text = bleach.clean(html_text,
                        tags=allow_tags,
                        strip=True
                    )

过滤属性:

import bleach

#允许的标签
allow_tags = [a, abbr, acronym, b, blockquote, code, em,i,li, ol, pre, strong, ul, h1, h2, h3, p]
#允许的属性
#这样设置将不会过滤所有标签的class属性,和a标签的href,rel属性....
attrs = {
    *: [class],
    a: [href, rel],
    img: [src, alt],
}

cleaned_text = bleach.clean(html_text,
                        tags=allow_tags,
                        strip=True,
                        attrs=attrs
                    )    

 其他

保存在数据库时把markdown文本转换成html后再进行清理,最后将安全的html文本储存在数据库中, 由于不安全的标签已被过滤所以在模版中显示时可以加上safe过滤器

Flask学习记录之MarkDown编辑文本

标签:

原文地址:http://www.cnblogs.com/agmcs/p/4448864.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!