1. 程式人生 > 程式設計 >flask框架自定義過濾器示例【markdown檔案讀取和展示功能】

flask框架自定義過濾器示例【markdown檔案讀取和展示功能】

本文例項講述了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程式設計有所幫助。