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

sam*_*j92 2 web2py line spacing

模型:

Field('text1', type='text', length=1000, notnull=True)
Run Code Online (Sandbox Code Playgroud)

功能:

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

我希望能够以正确的行间距/格式显示'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.
Run Code Online (Sandbox Code Playgroud)

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

任何帮助将不胜感激.谢谢.

Ant*_*ony 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))
Run Code Online (Sandbox Code Playgroud)

使用换行符替换:

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

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

{{=PRE(row.text1)}}
Run Code Online (Sandbox Code Playgroud)

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