Flask搭建博客内置第三方Markdown

本文介绍了如何在Flask应用中集成Markdown编辑器editor.md,详细阐述了从思路整理到实现过程,包括显示编辑器、设计数据库和路由、解决图片插入问题的步骤,展示了在博客文章创建中如何处理文本格式和图片上传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一直有在赶自己的博客网站,然后发现文章编辑如果只是使用文本编辑的话会产生很多问题,因此就决定查找资料并且内置一个第三方开源的Markdown编辑器。
最终我选择的是editor.md
image.png
展示一下最终的效果。
image.png
image.png

废话不多说,开始今天的学习之旅吧。

一、整理思路

仔细思考后,发现有几点技术方面的问题:

  1. 将源代码内置到flask中并且能在页面上显示
  2. 输入文章后,需要将文章文本格式转化成一种格式保存在数据库中
  3. 查看博客文章时,从数据库读取相应文本,并且转换成与编辑器右边相同的浏览格式。
  4. 解决文章中不能插入图片的问题。

以下我将以文章“新增”时作为介绍,并非“编辑”。

二、显示编辑器

首先编写此页面的form:

class PostForm(FlaskForm):
    title = StringField('标题', [DataRequired(), length(max=255)])
    body = TextAreaField('内容', [DataRequired()])
    #categories = SelectMultipleField('Categories', coerce=int)
    categories=SelectField('文章种类', choices=[],coerce=int )
    body_html = HiddenField()
    submit=SubmitField(render_kw={'value': "提交",'class': 'btn btn-success pull-right'})
    file = FileField(label="文章封面",validators=[FileRequired(),FileAllowed(['png', 'jpg'], '只接收.png和.jpg的图片')])
    #保证数据与数据库同步
    def __init__(self):
	    super(PostForm, self).__init__()
	    self.categories.choices = [(c.id, c.name) for c in Category.query.order_by('id')]

其中categories要保证是灵活可变的并且能够和数据库中的“文章种类”表相同步,因此这里用了__init__函数。

接着在html上:

<form class="am-form am-form-horizontal" method="post" action="" enctype="multipart/form-data">
		            {
  
  { form.hidden_tag() }}
		            <div class="am-form-group am-form-file am-form-group-lg am-form-group-sm am-form-group-md">
		            	<div class="am-u-sm-4 am-u-md-4 am-u-lg-4">
		            		<button type="button" class="am-btn am-btn-dark am-btn-sm am-radius">
						    <i class="am-icon-cloud-upload"></i> 选择文章封面</button>
		            	
		            	{
  
  { form.file(class_='form-control',id='doc-form-file') }}
		            	
						<div id="file-list"></div>
						<script>
						  $(functio
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值