Tinymce 在Flask/WTForms/googleappengine中格式化博客文章 下面是一个简单的问题:

Tinymce 在Flask/WTForms/googleappengine中格式化博客文章 下面是一个简单的问题:,tinymce,flask,werkzeug,wtforms,jinja2,Tinymce,Flask,Werkzeug,Wtforms,Jinja2,我的博客帖子在 …完全没有格式。它们只是一大块明文。任何代码或HTML标记,如/n或…更不用说h1、h2等…对文本在页面上的显示方式没有明显的影响 我正在用部署在GAE上的WTForms运行Flask。我怎样才能解决这个问题?有没有办法将WYSGIWYG编辑器(如TinyMCE)实现到新博客文章的表单字段中 我想要一个简单优雅的外观,就像 或 …或者至少类似于Stackoverflow自己的编辑器 格式在发布时在上述所有文章中呈现(而不是通过编辑器的grody Overflown工具栏)

我的博客帖子在

…完全没有格式。它们只是一大块明文。任何代码或HTML标记,如/n或
…更不用说h1、h2等…对文本在页面上的显示方式没有明显的影响

我正在用部署在GAE上的WTForms运行Flask。我怎样才能解决这个问题?有没有办法将WYSGIWYG编辑器(如TinyMCE)实现到新博客文章的表单字段中

我想要一个简单优雅的外观,就像

…或者至少类似于Stackoverflow自己的编辑器

格式在发布时在上述所有文章中呈现(而不是通过编辑器的grody Overflown工具栏)

我不确定禁止HTML标记在我的帖子中呈现的内容是否与WTForms中的类定制有关,或者与GAE的数据存储中必须特别处理的内容有关,或者与我需要在Flask中修复的内容有关(例如,帖子的模型)。任何关于我——作为一个相对初级的开发人员——如何将格式整合到这些博客文章中的清晰解决方案都会赢得赏金。下面应用程序中的特定代码

注意:还有一个烧瓶降价扩展,但我同样不确定如何整合它以达到我想要的效果


问题的细节,加上代码库中的代码片段 我在Google App Engine上运行Flask(当然是使用Jinja模板/Werkzeug路由),对如何将所见即所得编辑器集成到我专门用于博客帖子的页面感到困惑

我假设,如果合并TinyMCE,对JavaScript的调用会出现在模板的标题中……如下所示:

<script type="text/javascript" src="/static/js/tiny_mce/tiny_mce.js">

但是TextAreaField是从(我不知道在哪里)导入的,并且不知道这是否是需要调整的正确位置/内容。答案是否在WTForm模块的init.py、file.py和/或html5.py中?

再一次,如果我在文章中包含的HTML标签在发布时被呈现出来,我会很高兴……但是,对于那些不习惯HTML的人来说,用一种巧妙的方式使他们的文章格式变得简单,我将倍感感激。非常感谢任何为我指明正确方向的帮助

添加代码,如果需要,如下所示



我的模型中有以下类。py

class PostModel(db.Model):
    """New Post Model"""
    title = db.StringProperty(required = True)
    prose = db.TextProperty(required = True)
    when = db.DateTimeProperty(auto_now_add = True)
    author = db.UserProperty(required = True)


下面的课在我的表格里

class PostForm(wtf.Form):
    title = wtf.TextField('Title: something buzz-worthy...', validators=[validators.Required()])
    prose = wtf.TextAreaField('Content: something beautiful...', validators=[validators.Required()])

将HTML编码为HTML的问题很可能发生在呈现时而不是编写时。当您接收回数据并将其保存在数据存储中时,如果您的HTML仍然是HTML而不是
标记
,则需要将渲染标记为安全:

{% for post in posts %}
<h2>{{ post.title | safe }}<h2>
<article>{{ post.content | safe }}</article>
{% endfor %}
{%for posts in posts%}
{{post.title | safe}}
{{post.content | safe}}
{%endfor%}

另外,在WTForms中,
Field.Label
(如
form.poss.Label
)实际上呈现了一个完整的标签(无需将对它的调用包装在预呈现的标签中)。

Sean…感谢您的输入!真正地注意:我的post.content~确实是安全的,是吗?比如:{{form.poss | safe}}所以……我认为这不是问题所在。然而,也许“预渲染”标签线索正在引导我走上正确的道路。但是:在模板文件中,标签“tag”不是在{{form.pose | safe}之前关闭吗?因此,我不确定标签是如何在模板中包装{{form.pose | safe}}。我想我不太确定如何与Jinja协同工作,就其本身而言……我也不确定什么是“完整”标签与任何其他类型的标签。@Sean-如果您试图呈现表单,那么是的。TinyMCE在编辑器中显示HTML(例如,
斜体文本
而不是斜体文本)是您遇到的问题吗?至于您的第二条评论,标签是用
for=“target\u id”
属性呈现的-它不需要包装文本输入,因为浏览器将自动连接这两个文本。非常感谢!尤里卡!这确实奏效了。。。我是在用表单的模板(new_post.html)而不是(blog.html)页面做进一步的工作……该页面要求通过{{post.pose{safe}将自己的呈现标记为安全。现在效果很好。您是对的:不需要在模板文件中用自己的标记包装{{form.title.label}}。谢谢你!完全解决了这个问题。
class PostModel(db.Model):
    """New Post Model"""
    title = db.StringProperty(required = True)
    prose = db.TextProperty(required = True)
    when = db.DateTimeProperty(auto_now_add = True)
    author = db.UserProperty(required = True)
class PostForm(wtf.Form):
    title = wtf.TextField('Title: something buzz-worthy...', validators=[validators.Required()])
    prose = wtf.TextAreaField('Content: something beautiful...', validators=[validators.Required()])
{% for post in posts %}
<h2>{{ post.title | safe }}<h2>
<article>{{ post.content | safe }}</article>
{% endfor %}