web2py-ckeditor如何显示由ckeditor而不是html标签创建的富文本

时间:2015-11-20 09:31:01

标签: ckeditor web2py rich-text-editor web2py-modules

我正在使用带有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会显示记录,如下所示: enter image description here

当我点击“查看”按钮时,我得到以下内容: enter image description here

我不想用html标签显示文本。我想获得丰富的文字。任何人都可以告诉我我应该做什么或需要我选择另一个富文本编辑器吗?

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

1 个答案:

答案 0 :(得分:1)

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

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

represent函数控制字段值在SQLTABLESQLFORM.grid,只读SQLFORM以及使用Rows.render时的显示方式方法

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