flask框架自定义过滤器示例【markdown文件读取和展示功能】


Posted in Python onNovember 08, 2019

本文实例讲述了flask框架自定义过滤器。分享给大家供大家参考,具体如下:

除了一些内置的join length safe等过滤器外, flask还提供了自定义过滤器的功能.

一. 自定义一个mardown过滤器

自定义一个markdown过滤器, 使过滤器可以像safe解析html标签一样解析md语法.

  • 安装库
pip install Markdown==2.3.1
  • 自定义过滤器

使用@app.template_filter(‘md')过滤器, 此时便拥有了名为md的过滤器.

@app.template_filter('md')
def markdown_to_html(txt):
  from markdown import markdown
  return markdown(txt)
  • 使用示例

views

@app.route('/', methods=['POST', 'GET'])
def index():
  return render_template('index.html', body='# hello')
  • 模板中直接使用
{{ body|md|safe }}

二. 添加读取文件的功能

读取md文件, 并输出到html中

  • 定义读文件函数
def read_md(filename):
  with open(filename) as md_file:
    content = reduce(lambda x, y: x+y, md_file.readline())
  return content.decode('utf-8')
  • 上下文管理器

此时read_md函数可以全局使用

@app.context_processor
def inject_methods():
  return dict(read_md=read_md)
  • 可以在模板中调用函数
{{ read_md('test.md')|md|safe}}

希望本文所述对大家基于flask框架的Python程序设计有所帮助。

Python 相关文章推荐
python抓取网页图片并放到指定文件夹
Apr 24 Python
利用Python绘制数据的瀑布图的教程
Apr 07 Python
分析用Python脚本关闭文件操作的机制
Jun 28 Python
Python聚类算法之DBSACN实例分析
Nov 20 Python
Python输出带颜色的字符串实例
Oct 10 Python
Python实现matplotlib显示中文的方法详解
Feb 06 Python
python实现拓扑排序的基本教程
Mar 11 Python
在Pycharm terminal中字体大小设置的方法
Jan 16 Python
Keras使用tensorboard显示训练过程的实例
Feb 15 Python
jupyter notebook读取/导出文件/图片实例
Apr 16 Python
Python OpenCV去除字母后面的杂线操作
Jul 05 Python
Python GUI库Tkiner使用方法代码示例
Nov 27 Python
Python通过递归获取目录下指定文件代码实例
Nov 07 #Python
Django REST framework 单元测试实例解析
Nov 07 #Python
浅谈python中统计计数的几种方法和Counter详解
Nov 07 #Python
Python操作SQLite/MySQL/LMDB数据库的方法
Nov 07 #Python
Flask框架路由和视图用法实例分析
Nov 07 #Python
Python 切分数组实例解析
Nov 07 #Python
Django 简单实现分页与搜索功能的示例代码
Nov 07 #Python
You might like
浅析php中jsonp的跨域实例
2013/06/21 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
2014/06/13 PHP
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
ajax处理php返回json数据的实例代码
2013/01/24 Javascript
js如何实现设计模式中的模板方法
2013/07/23 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
判断浏览器的内核及版本号方法汇总
2015/01/05 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
基于jQuery的表单填充实例
2017/08/22 jQuery
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
Vue-cli项目获取本地json文件数据的实例
2018/03/07 Javascript
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
JavaScript创建防篡改对象的方法分析
2018/12/30 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
Vue实现计算器计算效果
2020/08/17 Javascript
详解python中的json的基本使用方法
2016/12/21 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
Python OpenCV处理图像之图像直方图和反向投影
2018/07/10 Python
Selenium鼠标与键盘事件常用操作方法示例
2018/08/13 Python
Python实现仿射密码的思路详解
2020/04/23 Python
Django 解决上传文件时,request.FILES为空的问题
2020/05/20 Python
Python虚拟环境的创建和使用详解
2020/09/07 Python
Python图像读写方法对比
2020/11/16 Python
Canvas与Image互相转换示例代码
2013/08/09 HTML / CSS
Linux机考试题
2015/10/16 面试题
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
优秀党支部书记事迹材料
2014/05/29 职场文书
班风口号
2014/06/18 职场文书
岗位工作说明书
2014/07/29 职场文书
《雷雨》教学反思
2016/02/20 职场文书
go语言-在mac下brew升级golang
2021/04/25 Golang
python实现监听键盘
2021/04/26 Python
Mysql 如何查询时间段交集
2021/06/08 MySQL
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis