Flask 博客 post 广泛的控制 - 如何控制文本格式、添加链接、图片等的能力
Flask blog post extensive controls - How to control text formating, ability to add links, pictures etc
我正在使用 Flask python web-framework 构建一个 website-blog。我可以创建一个博客 post,其中 content
字段是我 post 的所有文本所在的位置。问题是它只是一个 TextAreaField
,带有未格式化的原始文本。在我见过的每个主要论坛(甚至这个 stack-overflow post)中,当您组装 post 时,您都可以使用粗体文本、斜体文本,添加 links,添加 code-styled 文本、添加图片、添加编号列表、标题等。
如何将其中的任何内容添加到我的 post?从视觉上看,我想要的是这些控件:
可以将文本的一部分设为粗体,另一部分设为斜体,添加下划线,添加图片,添加 link,添加代码部分,添加标题(这些将是足以满足我的需求;嵌入视频也不错)。我知道图像可能是一件更困难的事情,因为我 运行 陷入了图像保存位置的问题。将它们全部保存per-post,将它们独立保存在数据库中的另一个table中并link它们到一个单独的post(one-post到many-pictures关系),将它们存储到外部服务(例如 Imgur)?
简而言之,我的 PostModel
table(使用 flask_sqlalchemy
)包含这些列:title
、content
、author
、datePosted
和 tags
。我的 PostForm
表单包含字段:title
(StringField
)、content
(TextAreaField
) 和 tags
(FieldList(FormField())
) 和一个按钮 submitField
.
如何在我的烧瓶中容纳这些功能 web-app?我是否可以对内容 TextAreaField
中的文本进行格式化,使其以某种方式显示?希望我说清楚了。提前致谢。
我需要的是 WYSIWYG(所见即所得)编辑器。有许多免费提供的,其中流行的有 TinyMCE、Summernote、CKEditor 等。
您当前的代码几乎不需要修改。将它与您的代码集成并不难。您指定所需的库和初始化代码。
通常,您有一个 content
类型的 textarea
字段,这将需要一个 class
属性,如为库指定的(对于 Summernote 说 class="summernoteClass"
)这样textarea
元素可以通过库的 javascript 代码作为目标。
然后你只需像以前一样将这些内容存储到数据库中。请注意,这可能需要清理内容,以防用户键入任何恶意的 <script>
s(如果是这样,我建议使用 bleach
python 模块,然后 bleach.clean(str)
)。
最后要使用 Jinja2 模板框架显示 html 返回(而不是 html 实体),您只需在 html 代码中附加 |safe
即可,像这样:<p class="article-content">{{ post.content | safe }}</p>
。也许这会对其他人有所帮助。
我正在使用 Flask python web-framework 构建一个 website-blog。我可以创建一个博客 post,其中 content
字段是我 post 的所有文本所在的位置。问题是它只是一个 TextAreaField
,带有未格式化的原始文本。在我见过的每个主要论坛(甚至这个 stack-overflow post)中,当您组装 post 时,您都可以使用粗体文本、斜体文本,添加 links,添加 code-styled 文本、添加图片、添加编号列表、标题等。
如何将其中的任何内容添加到我的 post?从视觉上看,我想要的是这些控件:
可以将文本的一部分设为粗体,另一部分设为斜体,添加下划线,添加图片,添加 link,添加代码部分,添加标题(这些将是足以满足我的需求;嵌入视频也不错)。我知道图像可能是一件更困难的事情,因为我 运行 陷入了图像保存位置的问题。将它们全部保存per-post,将它们独立保存在数据库中的另一个table中并link它们到一个单独的post(one-post到many-pictures关系),将它们存储到外部服务(例如 Imgur)?
简而言之,我的 PostModel
table(使用 flask_sqlalchemy
)包含这些列:title
、content
、author
、datePosted
和 tags
。我的 PostForm
表单包含字段:title
(StringField
)、content
(TextAreaField
) 和 tags
(FieldList(FormField())
) 和一个按钮 submitField
.
如何在我的烧瓶中容纳这些功能 web-app?我是否可以对内容 TextAreaField
中的文本进行格式化,使其以某种方式显示?希望我说清楚了。提前致谢。
我需要的是 WYSIWYG(所见即所得)编辑器。有许多免费提供的,其中流行的有 TinyMCE、Summernote、CKEditor 等。
您当前的代码几乎不需要修改。将它与您的代码集成并不难。您指定所需的库和初始化代码。
通常,您有一个 content
类型的 textarea
字段,这将需要一个 class
属性,如为库指定的(对于 Summernote 说 class="summernoteClass"
)这样textarea
元素可以通过库的 javascript 代码作为目标。
然后你只需像以前一样将这些内容存储到数据库中。请注意,这可能需要清理内容,以防用户键入任何恶意的 <script>
s(如果是这样,我建议使用 bleach
python 模块,然后 bleach.clean(str)
)。
最后要使用 Jinja2 模板框架显示 html 返回(而不是 html 实体),您只需在 html 代码中附加 |safe
即可,像这样:<p class="article-content">{{ post.content | safe }}</p>
。也许这会对其他人有所帮助。