首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改SQLFORM文本输出-换行符,段落(web2py框架)

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

Stack Overflow用户
提问于 2012-05-14 07:01:53
回答 1查看 2.5K关注 0票数 3

模型:

代码语言:javascript
复制
Field('text1', type='text', length=1000, notnull=True)

函数:

代码语言:javascript
复制
def textinput():
f=SQLFORM(db.example, fields=['text1'])
if f.accepts(request.vars, session):
return dict(form=f)

我希望能够以适当的行距/格式显示“text1”字段。如果用户要按下表单中的enter键来开始一个新的行或整个新的段落,我希望这反映在视图上。

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

代码语言:javascript
复制
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方法,并将所有输入击键替换为换行,但我不知道如何做到这一点。我搜索了所有的谷歌,但我找不到我的确切问题。

任何帮助都将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-14 13:21:42

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

使用<pre>**:**的

代码语言:javascript
复制
Field('text1', type='text', length=1000, notnull=True,
    represent=lambda text, row: PRE(text))

使用换行替换的:

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

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

代码语言:javascript
复制
{{=PRE(row.text1)}}

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10578774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档