zoukankan      html  css  js  c++  java
  • Flask学习记录之MarkDown编辑文本

    为了让网页支持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过滤器

  • 相关阅读:
    elasticsearch安装教程
    mysql设置账号密码及授权
    mongodb设置账号密码授权案例
    新安装的centos 6.5,不能上网,外网ping不通,内网可以ping通解决方法
    docker-compose安装教程
    解决github图片不显示问题
    网站宽带计算方式
    thinkphp 如何实现url的rewrite
    nginx Https配置
    Ext.Net导入Excel
  • 原文地址:https://www.cnblogs.com/agmcs/p/4448864.html
Copyright © 2011-2022 走看看