我正在使用Flask python网络框架构建网站博客。我可以创建一个博客帖子,其中content
字段是我帖子的所有文本所在的位置。问题在于它只是带有原始未格式化文本的TextAreaField
。在我见过的每个主要论坛中(甚至是这个堆栈溢出的帖子),您在组装帖子时都可以使用粗体,斜体,添加链接,添加代码样式的文本,添加图片,添加编号列表,标题等。
如何将其中任何内容添加到我的帖子中?在视觉上,我要使用的是这些控件:
可以使文本的一部分变为粗体,另一部分使其变为斜体,在其下划线,添加图片,添加链接,添加代码部分,添加标题(这些足以满足我的需要;还可以嵌入一个视频会很好)。我了解到图像可能会更困难,因为我遇到了将图像保存到何处的问题。每个帖子都保存它们,将它们独立保存在数据库的另一个表中,并将它们链接到单个帖子(一个帖子到多张图片的关系),将它们存储到外部服务(例如Imgur)?
简而言之,我的PostModel
表(使用flask_sqlalchemy
)包含以下列:title
,content
,author
,datePosted
和tags
。我的PostForm
表单包含以下字段:title
(StringField
),content
(TextAreaField
)和tags
(FieldList(FormField())
)以及按钮submitField
。
我如何在我的Flask Web应用程序中配合这些功能?是否可以格式化内容TextAreaField
中的文本,使其以某种方式显示?希望我能说清楚。预先感谢。
我需要的是所见即所得(所见即所得)编辑器。有许多免费提供的热门软件,其中包括TinyMCE,Summernote,CKEditor等。
您当前的代码几乎不需要修改。将其与代码集成起来并不难。您指定所需的库和初始化代码。
通常,您有content
类型的textarea
字段,该字段需要为库指定的class
属性(对于Summernote说class="summernoteClass"
),以便库的javascript可以将textarea
元素作为目标代码。
然后,您只需像以前一样将此内容存储到数据库中。请注意,这可能需要清理内容,以防用户键入任何恶意的<script>
(如果这样,我建议先使用bleach
python模块,然后再选择bleach.clean(str)
)。
最后使用Jinja2模板框架显示html背面(而不是html实体),您只需在html代码中附加|safe
即可,如下所示:<p class="article-content">{{ post.content | safe }}</p>
。也许这会帮助其他人。