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过滤器
Flask学习记录之MarkDown编辑文本的更多相关文章
- [ZHUAN]Flask学习记录之Flask-SQLAlchemy
From: http://www.cnblogs.com/agmcs/p/4445583.html 各种查询方式:http://www.360doc.com/content/12/0608/11/93 ...
- Flask学习记录之Flask-Mail
Flask-Mail可以连接到配置中的SMTP服务器,进行邮件发送,如果没有进行SMTP服务器的配置,将会默认连接到localhost上的 一.配置及初始化 (1)flask应用配置 #配置选项 MA ...
- Flask学习记录之Flask-SQLAlchemy
Flask-SQLAlchemy库让flask更方便的使用SQLALchemy,是一个强大的关系形数据库框架,既可以使用orm方式操作数据库,也可以使用原始的SQL命令. Flask-Migrate ...
- ArcGIS学习记录—ArcGIS ArcMap编辑状态中线打断的问题
摘要:在处理数据时,我们经常会遇到线打断的问题,比如需要指定在线上某处打断线,或者新建网络数据集时需要在线的交点处打段线等等.现将桌面版中我所遇到的线打断的工具总结如下: 在ArcGIS矢量处理数据时 ...
- Flask学习记录之Flask-Login
Flask-Loging 可以方便的管理用户会话,保护路由只让认证用户访问 http://flask-login.readthedocs.org/en/latest/ 一.初始化Flask-Login ...
- Flask学习记录之Flask-Admin
相信用过Django框架的都不会忘记它强大的Admin功能,Flask-admin是一款能够与Django Admin所媲美的扩展,能够快速创建Web管理界面,实现了用户.文件增删改查等常用功能:也可 ...
- Flask学习记录之Flask-Migrate
一.配置Flask-Migrate from flask.ext.migrate import Migrate, MigrateCommand migrate = Migrate(app,db) #第 ...
- Flask学习记录之Flask-WTF
Flask-wtf时Wtforms库的flask框架扩展,能够方便的处理Web表单 一.定义一个web表单 使用flask-wtf时,每个web表单都由一个继承自flask.ext.wtf.Form的 ...
- Flask学习记录之Flask-Moment
Moment.js 是一个简单易用的轻量级JavaScript日期处理类库,提供了日期格式化.日期解析等功能.它支持在浏览器和NodeJS两种环境中运行.此类库能够 将给定的任意日期转换成多种不同的格 ...
随机推荐
- android禁用光感按键
用RE浏览器打开/system/usr/keylayout下的qwerty.kl文件, 找到key 158 BACK key 139 MENU key 102 HOME 分别在其之前加下#号,如下: ...
- C++ 单向链表反转
单向链表反转,一道常见的面试题,动手实现下. #include "stdafx.h" #include <stdlib.h> struct Node{ int data ...
- linux文件合并,去重,分割
第一:两个文件的交集,并集前提条件:每个文件中不得有重复行1. 取出两个文件的并集(重复的行只保留一份)2. 取出两个文件的交集(只留下同时存在于两个文件中的文件)3. 删除交集,留下其他的行1. c ...
- Altium Designer中使用差分对布线
Contents Language 在原理图中定义差分对 在PCB中查看和管理差分对 在PCB中定义差分对 适用的设计规则 设置设计规则的辖域 使用差分对向导定义规则 差分对布线 包括管脚交换的FPG ...
- 为什么都反对XML而支持使用json呢?
一个使用上的因素:JSON的结构更容易映射至一般语言的数据结构. XML和JSON的主要组成成分: XML是element.attribute和element content. JSON是object ...
- Android动画效果
layout_left_in.xml <?xml version="1.0" encoding="utf-8"?> <layoutAnimat ...
- iOS打电话、发邮件、发短信、打开浏览器
//1.调用 自带mail [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://163@16 ...
- codeforces Arrival of the General 题解
A Ministry for Defense sent a general to inspect the Super Secret Military Squad under the command o ...
- ibatis的selectkey
在使用ibatis插入数据进数据库的时候,会用到一些sequence的数据,有些情况下,在插入完成之后还需要将sequence的值返回,然后才能进行下一步的操作. 使用ibatis的sel ...
- qemu-img 快照的一些总结
qemu-img 快照的一些总结 http://www.openext.org/2014/06/qemu-img-snapshot-re http://blog.csdn.net/muge0913/a ...