Google App Engine Datastore多行条目在HTML中未显示为多行

4 投票
1 回答
774 浏览
提问于 2025-04-16 15:33

以Google应用商店的留言本示例为例,当我们输入多行内容并保存后,再读取出来显示时,内容却变成了一行。
我们该如何让它显示得和最开始输入时一样,保持多行的格式呢?

数据库模型是这样的:

class Greeting(db.Model):
    author = db.UserProperty()
    content = db.StringProperty(multiline=True)
    date = db.DateTimeProperty(auto_now_add=True)

而提交表单是这样的:

self.response.out.write("""
          <form action="/sign" method="post">
            <div><textarea name="content" rows="3" cols="60"></textarea></div>
            <div><input type="submit" value="Sign Guestbook"></div>
          </form>
        </body>
      </html>""")

1 个回答

8

HTML会忽略像 \r\n\n 这样的换行符。

这里有几种解决办法:

  1. 用合适的HTML标签 <br> 来替换这些特殊字符。

  2. 把多行文本放在 <pre> 标签里面。

  3. 如果你在使用网页应用模板,可以试试 {{greeting.content|linebreaks}},这是 @wooble 的建议。

  4. 在你的CSS中设置 white-space:pre,这是 @Nick 的建议(示例可以在 这里找到)。

撰写回答