flask使用jinja2模块将文章导出为markdown文档
- 2025-04-21 12:30:34
- 开发
- 21
- shevechco
因为我们文章里面都含有代码,所以导出成word或者pdf不是很方便进行代码的复制,所以在使用中,将文章导出成markdown文档方便后续离线使用。
使用方法很简单,代码如下:
from jinja2 import Template
def post_export():
id = request.args.get("id")
try:
post = BPost.get_by_id(int(id))
template_str = """# {{ title }}
{{ content }}
"""
content = post.content.replace("/static/upload/", request.url_root+"static/upload/")
data = { "title": post.title, "content": content}
template = Template(template_str)
markdown_content = template.render(data)
bio = io.BytesIO(markdown_content.encode("utf-8"))
except Exception as e:
current_app.logger.error("导出文章到 markdown 报错, {}".format(e))
abort(500)
return send_file(bio, mimetype="text/md", as_attachment=True, download_name="{}.md".format(post.id))
我们这里使用Template类,然后使用render方法渲染数据到markdown,实际markdown也是一种text文本类型。
我们将渲染的数据通过io模块存储在内存中,最后使用flask中的send_file方法发送到前台即可。
注意as_attachment参数必为true,如果不设置或者为false的话,会在浏览器直接显示markdown文本。
内容版权声明:除非注明,否则皆为本站原创文章。