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操作sqlite3快速、安全插入数据(防注入)的实例
Apr 26 Python
Python实现的文本编辑器功能示例
Jun 30 Python
用十张图详解TensorFlow数据读取机制(附代码)
Feb 06 Python
python中PS 图像调整算法原理之亮度调整
Jun 28 Python
python字符串查找函数的用法详解
Jul 08 Python
Django RBAC权限管理设计过程详解
Aug 06 Python
Python3搭建http服务器的实现代码
Feb 11 Python
python如何查看网页代码
Jun 07 Python
python与c语言的语法有哪些不一样的
Sep 13 Python
Python+Opencv实现把图片、视频互转的示例
Dec 17 Python
python爬虫之利用selenium模块自动登录CSDN
Apr 22 Python
python 如何用terminal输入参数
May 25 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和XSS跨站攻击的防范
2007/04/17 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
PHP遍历并打印指定目录下所有文件实例
2014/02/10 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
php 在字符串指定位置插入新字符的简单实现
2016/06/28 PHP
PHP+Mysql无刷新问答评论系统(源码)
2016/12/20 PHP
Docker配置PHP开发环境教程
2016/12/21 PHP
关于php几种字符串连接的效率比较(详解)
2017/02/22 PHP
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
浅析JavaScript Array和string的转换(推荐)
2016/05/20 Javascript
js实现将json数组显示前台table中
2017/01/10 Javascript
js中创建对象的几种方式
2017/02/05 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
webpack 如何解析代码模块路径的实现
2019/09/04 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
jQuery实现获取多选框的值示例
2020/02/07 jQuery
在Vue中获取自定义属性方法:data-id的实例
2020/09/09 Javascript
python标准算法实现数组全排列的方法
2015/03/17 Python
深入理解Python变量与常量
2016/06/02 Python
Python列表切片用法示例
2017/04/19 Python
Python 3.6 读取并操作文件内容的实例
2018/04/23 Python
Python使用get_text()方法从大段html中提取文本的实例
2019/08/27 Python
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
期末考试动员演讲稿
2014/01/10 职场文书
汽车检测与维修专业求职信
2014/07/04 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
出国导师推荐信
2015/03/25 职场文书
学术会议通知范文
2015/04/15 职场文书
田径运动会通讯稿
2015/07/18 职场文书
幼儿园家长心得体会
2016/01/21 职场文书
nginx+lua单机上万并发的实现
2021/05/31 Servers
三星 3nm 芯片将于第二季度开始量产
2022/04/29 数码科技