将字符串解析为HTML

时间:2016-05-05 19:40:59

标签: python html jinja2 html-encode

我尝试重新创建一个博客CRUD应用程序,用户可以通过将文本输入textarea <form>来创建帖子。从这里输入作为类型text存储在Postgresql中供以后使用。我想将该文本字符串解析为HTML。

我遇到的问题:

用户输入将格式化为HTML的字符串。该程序将采用此字符串并将其格式化为原始HTML。

预期输入内容:

<h2>Title here</h2>
<p>some text here</p>

应格式化为:

这里的标题

这里的一些文字

如何显示:

&lt;h2&gt;Title here &lt;/h2&gt;
&lt;p&gt;some text here &lt;/p&gt;

我做了什么:

我已经读过使用像CKEditor和TinyMCE这样的所见即所得的文本编辑器。我甚至使用了CKEditor但是当我将输入保存到数据库中时,它被渲染为字符串而不是我想要的HTML,这是有道理的。我还使用了HTML5lib,html和BeautifulSoup等模块,但它仍然使用单引号呈现为'<h2>Title here</h2><p>some text here</p>'。所以它仍然是一个字符串。我想逃避第一个和最后一个引号,但不是每个引号之间都是。

基本上我试图在Stackoverflow上重现这个非常文本的编辑器。我将输入存储为Postgresql text数据类型。我认为在从数据库中检索字符串时将字符串格式化为HTML是最佳的,而不是在存储之前(错误?)。我甚至实现了一个类,如:

class Post():
  body = db.Column(db.Text)

def to_html(self, body):
  '''format string of chars to HTML. Return HTML'''
  # ...

然后在html模板中我可以(我使用Jinja这样做):

{{ Post.to_html(body) }}

我相信我对编码/解码文本和HTML感到困惑。

1 个答案:

答案 0 :(得分:1)

你需要了解一下html ...你所拥有的是原始HTML:

<h2>Title here</h2><p>some text here</p>

将其保存在扩展名为.htm的空白文件中,然后使用浏览器打开。浏览器解释原始HTML并为您提供所需的格式化输出。

我建议你在继续项目之前阅读this tutorial