Flask框架实现Markdown过滤器与文件读取展示

Luna
Luna
发布时间:2026-10-13 | 5人浏览过
原创

本文介绍如何在Flask框架中自定义模板过滤器,将Markdown语法转换为HTML。通过安装Markdown库并注册@app.template_filter,实现md过滤器的使用。此外,结合上下文处理器注入读取文件的函数,支持在模板中直接调用并展示本地Markdown文件内容,适用于简单的文档展示场景。

Flask自定义Markdown过滤器与文件读取示例

本文详细介绍Flask框架中自定义过滤器的实现方法,提供相关代码示例供参考。

除了Flask内置的join、length、safe等常用过滤器外,框架还支持用户自定义过滤器功能。

定义Markdown过滤器

一、定义Markdown过滤器

我们需要创建一个自定义的Markdown过滤器,使其能够像safe过滤器解析HTML标签那样,解析Markdown语法。

  • 首先安装必要的依赖库。

安装依赖库


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')

  • 在HTML模板中直接调用该过滤器。

模板调用示例


{{ body|md|safe }}

实现文件读取功能

二、增加读取文件的功能

实现读取Markdown文件,并将其内容渲染为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 相关产品和应用

全部下载

专题列表