从烧瓶中的Markdown转换为Editor时出错

时间:2018-11-04 15:57:55

标签: python flask markdown

我正在python中使用markdown库在我的flask应用程序中显示一些markdown。 在输出显示期间出现错误,因为它显示的是markdown内容而未将其转换为HTML。

这是我的python代码。

import markdown
from flask import Flask
#import some other libraries

@app.route('/md')
def md():
    content = """
    <h1>Hello</h1>
    Chapter
    =======

    Section
    -------

    * Item 1
    * Item 2
    **Ishaan**
    """

    content = Markup(markdown.markdown(content))
    return render_template('md.html', **locals())

这是我的html代码。

<html>
  <head>
    <title>Markdown Snippet</title>
  </head>
  <body>
    {{ content }}
  </body>
</html>

我正在遵循here

中的代码

我知道我正在犯一些错误,但是如果有人帮助我,我将非常感激。 预先感谢。

1 个答案:

答案 0 :(得分:1)

确定您的Markdown行。

Python三引号内的所有内容均由Python逐字解释。包括缩进。因此,传递给Markdown的文本缩进了一层,从而使Markdown将整个文档解释为一个代码块。删除缩进,Markdown将正确识别文本:

@app.route('/md')
def md():
    content = """
<h1>Hello</h1>
Chapter
=======

Section
-------

* Item 1
* Item 2
**Ishaan**
"""

请注意,您要从中复制的示例也不会缩进用三引号引起来的文本。当然,这会使您的Python代码可读性降低。因此,Python标准库包含textwrap.dedent()函数,该函数将以编程方式删除缩进:

from textwrap import dedent

@app.route('/md')
def md():
    content = """
    <h1>Hello</h1>
    Chapter
    =======

    Section
    -------

    * Item 1
    * Item 2
    **Ishaan**
    """

    content = Markup(markdown.markdown(dedent(content))) # <= dedent here

请注意,content在传递给Markdown之前先通过dedent传递。