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フィールド値がどのように表示されるかを制御します。SQLTABLESQLFORM.gridSQLFORMRows.render

このsanitize=Trueオプションは、許可される HTML タグと属性を制限して、ユーザー提供のマークアップをページに含めることによるセキュリティ リスクを最小限に抑えます。許可されたタグと属性のカスタマイズの詳細については、ドキュメントを参照してください。

于 2015-11-20T20:20:08.753 に答える