1

我正在使用带有 ckeditor 的 web2py。我想使用 SQLFORM 将富文本输入到数据库中。所以我选择 ckeditor 作为字段小部件。我已经安装了 ckeditor,这是我的 db.py:

from plugin_ckeditor import CKEditor
ckeditor = CKEditor(db)
db.define_table("comtable",
            Field("com_name",label="name"),
            Field("com_property",label="property",requires=IS_IN_SET(['A', 'B', 'C',"D"])),Field("com_detail",label="info",type="text",widget=ckeditor.widget))

以下是我的 default.py/index:

def index():
    form=SQLFORM(db.comtable,fields = ['com_name',"com_property","com_detail"])
    gridform=SQLFORM.smartgrid(db.comtable)
    if form.process().accepted:
        response.flash="OK"
    return dict(form=form,gridform=gridform)

以下是我的 index.html:

{{=form}}
{{=gridform}}

在我使用 ckeditor 小部件在文本中输入一些信息后,SQLFORM.smartgrid 将显示记录,如下所示: 在此处输入图像描述

当我单击“查看”按钮时,我得到以下信息: 在此处输入图像描述

我不想显示带有 html 标签的文本。我想获得富文本。谁能告诉我应该做什么或需要我选择另一个富文本编辑器吗?

借助以下方法,您告诉我单击“查看”按钮时可以显示富文本。但是,当我单击“编辑”按钮时,会显示 HTML 标记代码。单击“编辑”按钮时,有什么方法可以显示富文本?非常感谢。

4

1 回答 1

2

默认情况下,视图中包含的所有数据都被转义(出于安全目的)。要覆盖它,您可以将内容包装在XML()帮助程序中。要使其自动化,您可以通过represent为相关字段指定属性来实现:

Field('com_detail', label='info', type='text', widget=ckeditor.widget,
      represent=lambda content, row: XML(content, sanitize=True))

represent函数控制字段值如何在SQLTABLE, SQLFORM.grid, 只读SQLFORMs 中显示,以及何时使用该Rows.render方法。

sanitize=True选项限制允许的 HTML 标记和属性,以最大限度地降低在页面中包含用户提供的标记的安全风险。有关自定义允许的标签和属性的详细信息,请参阅文档

于 2015-11-20T20:20:08.753 回答