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中zip和unzip数据的方法
May 27 Python
Python中特殊函数集锦
Jul 27 Python
Python中的模块导入和读取键盘输入的方法
Oct 16 Python
Python调用C++程序的方法详解
Jan 24 Python
python基础_文件操作实现全文或单行替换的方法
Sep 04 Python
python opencv旋转图像(保持图像不被裁减)
Jul 26 Python
浅谈django orm 优化
Aug 18 Python
python射线法判断检测点是否位于区域外接矩形内
Jun 28 Python
如何基于Python获取图片的物理尺寸
Nov 25 Python
Django查询优化及ajax编码格式原理解析
Mar 25 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
Mar 28 Python
利用python实现平稳时间序列的建模方式
Jun 03 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输出时间格式
2013/08/31 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
PHP长网址与短网址的实现方法
2017/10/13 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
JS获取iframe中marginHeight和marginWidth属性的方法
2015/04/01 Javascript
AngularJS中watch监听用法分析
2016/11/04 Javascript
JavaScript中绑定事件的三种方式及去除绑定
2016/11/05 Javascript
Angular排序实例详解
2017/06/28 Javascript
Vue.js进行查询操作的实例详解
2017/08/25 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
2017/11/24 Javascript
微信小程序实现流程进度的图样式功能
2018/01/16 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
vue.js实现的绑定class操作示例
2018/07/06 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
编写Python脚本批量下载DesktopNexus壁纸的教程
2015/05/06 Python
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
Python列表list排列组合操作示例
2018/12/18 Python
详解HTML5中download属性的应用
2015/08/06 HTML / CSS
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
遇到的Mysql的面试题
2014/06/29 面试题
会议邀请函范文
2014/01/09 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
英文道歉信
2015/01/20 职场文书
运动会通讯稿600字
2015/07/20 职场文书
银行柜员工作心得体会
2016/01/23 职场文书
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python
nginx服务器的下载安装与使用详解
2021/08/02 Servers
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL