2016-11-26 51 views
0

我有以下表:用户的输入检测换行符(web2py的)

db.define_table('comm', 
       Field('post','reference post', readable=False, writable=False), 
       Field('body','text', requires=IS_NOT_EMPTY()), 
       auth.signature 
       ) 

和在Python函数,下面的代码:

form=SQLFORM(db.comm).process() 

我请在返回的视图那种形式由蟒蛇功能

{{=form}} 

问题是当用户输入两个或更多段落,它不检测newlin e字符。我该如何解决这个问题?

回答

0

使用预标签显示您想要检测换行符的内容。

<pre>

的HTML预元件(或HTML预格式化文本)表示 预格式文本。此元素中的文本通常以 文件中的布局与 中的非比例(“monospace”)字体一样显示。此元素内的空格显示为键入。

{{for post in comments:}} 
    <pre>{{=post.body}}</pre> 
{{pass}} 
1

假设你指的是用户输入的后续显示在视图中,可以使用一个<pre>标签:http://www.w3schools.com/tags/tag_pre.asp。但是,您可能需要一些CSS来获取您喜欢的字体/样式(默认情况下,浏览器将使用固定宽度字体的替代样式)。

你也可以用<br>标记替代换行符:

{{=XML(record.body.replace('\n', '<br>'), sanitize=True, permitted_tags=['br/'])}} 

由于文本现在包含<br> HTML标签,就必须把它包装XML()防止web2py中逸出HTML - 但你也想要清理文字并仅允许<br>标记可防止恶意代码被执行。