在烧瓶应用程序的Markdown中引用图像文件

时间:2018-10-17 21:02:34

标签: flask markdown jinja2 flask-flatpages

我正在尝试使用flask创建一个简单的博客应用程序,该应用程序使用flask_flatpages使用每个帖子的markdown文件的内容填充jinja2模板。

app = Flask(__name__)
app.config.from_pyfile('settings.py')
pages = FlatPages(app)

@app.route('/<path>/')
def blog_post(path):
    post = pages.get_or_404(path)
    return render_template('post.html', post=post)

我遇到的问题是我无法链接markdown文件中的图像,例如,以下example_post.md文件在image.png文件的呈现HTML中返回了404错误(访问例如http://localhost:5000/example_post/

# Heading
Here is an example image.
![png](image.png)

我认为这是因为由于我创建的路由,访问图像尝试找到example_post/image.png,但是该图像实际上与post.md文件位于同一目录(没有{{ 1}}目录)。文件结构如下:

example_post/

在这种情况下,如何正确引用image.png文件的任何建议,或者如何更好地构建应用程序以使其正常工作?

1 个答案:

答案 0 :(得分:0)

我们可以在下面以此为例来解决您的问题。

from flask import send_from_directory

@app.route('<path:filename>')
def serve_static(filename):
    root_dir = os.path.dirname(os.getcwd())
    return send_from_directory(os.path.join(root_dir, 'md'), filename)

示例: https://www.programcreek.com/python/example/65747/flask.send_from_directory