1

在烧瓶应用程序中,我正在从 sqlite 数据库中检索一些条目,以显示在我的 html 页面上,代码如下:

@app.route('/')
def index():
    db = get_db()
    cur = db.execute('select title, text from entries order by id desc')
    entries = cur.fetchall()
    return render_template('index.html', entries=entries)

我想使用降价来格式化内容。我已经安装了 markdown,并且想在我的 sql 查询中使用它,就像在下面的原始数据中使用它一样。

import markdown
from flask import Flask
from flask import render_template
from flask import Markup

app = Flask(__name__)
@app.route('/')

def index():
  content = """
Chapter
=======

Section
-------

* Item 1
* Item 2
"""
  content = Markup(markdown.markdown(content))
  return render_template('index.html', **locals())

app.run(debug=True)

当它在 html 模板中被拉起时,它可以产生标记为标记的章节/部分/项目的内容。我不想安装 Flask-Markdown,如果可能的话,我只想用常规的 Markdown 来做这个。

4

1 回答 1

2

有两种选择:

  1. 您可以在将降价传递给之前呈现降价render_template

    @app.route('/')
    def index():
        db = get_db()
        cur = db.execute('select title, text from entries order by id desc')
        entries = [Markup(markdown(entry) for entry in cur.fetchall()]
        return render_template('index.html', entries=entries)
    
  2. 您可以注册一个模板过滤器,然后在您的模板中使用它:

    @app.template_filter("markdown")
    def render_markdown(markdown_text):
        return Markup(markdown(markdown_text))
    

    然后,在您的模板中,您可以调用markdown过滤器:

    {% for entry in entries %}
    <article>
        {{entry | markdown}}
    </article>
    {% endfor %}
    
于 2013-08-16T02:19:40.617 回答