2009-08-03 16 views
4

Python Webアプリケーションをプログラミングするために、ユーザーが軽量マークアップ言語でテキストを入力できるテキスト領域を作成します。テキストはhtmlテンプレートにインポートされ、ページに表示されます。今日、私は、ユーザーが任意の(HTML)テキストを入力することができますテキストエリアを作成するには、次のコマンドを使用します。唯一のいくつかの(、安全な最終的には軽量)マークアップが許可されるようにPythonの軽量マークアップ言語

my_text = cgidata.getvalue('my_text', 'default_text') 
ftable.AddRow([Label(_('Enter your text')), 
       TextArea('my_text', my_text, rows=8, cols=60).Format()]) 

は、どのように私はこれを変更することができますか?消毒剤を含むすべての提案は、Pythonと容易に統合できる限り、歓迎します。

答えて

8

独自に作成、それはあなたがさまざまな拡張機能を使用することができ、非常に柔軟性のあるパイソンmarkdown実装

import markdown 
mode = "remove" # or "replace" or "escape" 
md = markdown.Markdown(safe_mode=mode) 
html = md.convert(text) 

を使用など

+0

私はiPythonを使ってテキストをスクリプトタグを含むいくつかのhtmlとして定義しようとしました。私は奇妙な出力を得ました:テキストはまだ同じで、HTML = '[HTML_REMOVED]'危険なタグを削除するにはこれ以外に何が必要ですか?私は3つのモードすべてを同じ結果で試しました。 –

+0

いくつかのテストを実行しました。私はhtmlタグを入力することはできませんが、マークダウン構文のみを入力することはできません。ありがとう、それは働いた! –

+0

HTMLを置き換えるには、safe_mode = "replace"(safe_mode = Trueは以前のバージョンとの下位互換性のために機能します)を設定します。 HTMLはmarkdown.HTML_REMOVED_TEXTで定義されたテキストに置き換えられ、デフォルトは[HTML_REMOVED]になります。 HTMLを何か他のものに置き換えるには: markdown.HTML_REMOVED_TEXT = " - HTMLのHTMLは許可されていません - " – molicule

2

restructured textを使用できます。私はそれが墨塗りオプションを持っているかどうかはわかりませんが、Pythonでうまくサポートされていて、あらゆる種類のフォーマットを生成します。

+1

+1:RSTとDocutilsのルール。 –

1

この単純な消毒機能は、ホワイトリストを使用し、大体同じですpython-html-sanitizer-scrubber-filterの解決策ですが、属性の使用を制限することもできます(特に、誰かがstyle属性を使用することを望まないため)

関連する問題