修改SQLFORM文本输出 - 换行符,段落(web2py框架)

时间:2012-05-14 07:01:54

标签: line web2py spacing

型号:

Field('text1', type='text', length=1000, notnull=True)

功能:

def textinput():
f=SQLFORM(db.example, fields=['text1'])
if f.accepts(request.vars, session):
return dict(form=f)

我希望能够以正确的行间距/格式显示'text1'字段。如果用户要按表单中的[enter]键开始新行或整个新段落,我希望这反映在视图上。

例如,如果用户将以下内容输入SQLFORM:

This is a paragraph. Blah blah blah blah blah blah blah.
Blah blah blah blah blah blah blah blah blah.
Blah blah blah blah.

This is another paragraph. Blah blah blah blah blah.
Blah blah blah blah blah.

我想让它与视图中的完全一样,而不是让它全部没有间距。我该怎么做呢?我正在考虑使用.replace方法并用换行符替换所有[enter]击键,但我不知道该怎么做。我在谷歌搜索过但我无法找到确切的问题。

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:5)

最简单的方法是将文本包装在<pre>标记中,并使用CSS来控制样式。您还可以使用<br />标记替换换行符('\ n')。如果您通过只读SQLFORM,Crud读取表单,SQLTABLE或SQLFORM.grid显示文本,则可以设置字段的“表示”属性来控制显示:

使用<pre>

Field('text1', type='text', length=1000, notnull=True,
    represent=lambda text, row: PRE(text))

使用换行符替换

Field('text1', type='text', length=1000, notnull=True,
    represent=lambda text, row: XML(text.replace('\n', '<br />'),
        sanitize=True, permitted_tags=['br/']))

如果您手动将文本插入视图,则可以直接在视图中使用上述任一方法。例如:

{{=PRE(row.text1)}}

注意,浏览器通常会在<pre>标记中显示带有固定宽度字体的文本。如果您不想这样,则需要使用CSS来更改字体。