我正在尝试使用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文件的任何建议,或者如何更好地构建应用程序以使其正常工作?
答案 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