【问题标题】:Flask-Misaka can't recognize fenced code in markdown stringsFlask-Misaka 无法识别 markdown 字符串中的围栏代码
【发布时间】:2019-05-15 04:26:06
【问题描述】:

我正在使用 Flask-Misaka 和 Flask 将 markdown 字符串呈现为 html。但是,Flask-Misaka 似乎无法识别围栏代码。它确实删除了反引号,但没有显示彩色块。我已尝试使用 0.4.0 和 0.4.1 版本。

app.py

from flask import Flask, render_template
from flask_misaka import Misaka, markdown
app = Flask(__name__)
Misaka(app, fenced_code=True)
TEST_MD = markdown("```block```\n", fenced_code=True)

@app.route("/", methods=['GET'])
def index():
    return render_template('{{s|markdown}}', s=TEST_MD)

【问题讨论】:

  • 你能提供一个示例 Markdown 输入和实际的 HTML 输出吗?从您的问题中不清楚源是否没有被转换为代码块,或者代码块没有得到语法突出显示,这是两个不同的事情。

标签: python flask markdown misaka


【解决方案1】:

问题是您缺少样式表。如果您查看 Flask 的 HTML 输出,它将显示 <p><code>block</code></p>\n。因此,可以看到围栏代码并且正确呈现 HTML 输出。

直接显示代码执行结果的简短示例:

from flask import Flask, render_template_string
from flask_misaka import markdown

app = Flask(__name__)

with app.app_context():
    render_template_string('{{s}}', s=markdown("```block```\n", fenced_code=True))

【讨论】:

  • 谢谢。你说的对。刚才我自己不小心弄明白了。通过添加一些代码样式的 html 代码,例如 code {background-color: #eee; border: 1px solid #999; display: block; padding: 20px;},我现在可以在渲染页面中看到彩色代码块。
  • 不应该在<pre> 块中将受保护的代码块呈现为<code> 吗? (这就是雨果目前所做的)
  • 是的,没错。显然御坂做的不对。
猜你喜欢
  • 2018-08-02
  • 2017-12-31
  • 2015-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
相关资源
最近更新 更多