2009-09-14 5 views
1

が、私はこのように、AppEngineの上のDjangoのフォーム検証フレームワーク(http://code.google.com/appengine/articles/djangoforms.html)を使用しています:AppEngineのDjangoフォーム検証フレームワーク:HTMLなどを取り除く方法は?

data = MyForm(data=self.request.POST) 
    if data.is_valid(): 
    entity = data.save(commit=False) 
    entity.put() 

私はPOSTデータが前処理への道があるかどうだろう(悪意のあるコードを取り除くには、HTMLなど)を格納する前にそれ。どんなフォームバリデーションライブラリでもそういうものを用意しているようですね。当然の

ハンネス

答えて

2

短い答え:

forms.is_valid()オート)(クリーンと呼ばれるメソッドを呼び出すことにより、辞書forms.cleaned_dataに移入されます。任意のカスタム検証を実行したい場合は、自分の 'clean_filed_name'を定義して、クリーニングされたフィールド値を返すか、forms.ValidationError()を発生させます。エラーが発生すると、対応するフィールドのエラーは自動入力されます。

長い答え:上記の回答に加えて

Refer Documentation

1

、別の視点:しないでください。実用的な処理をしてユーザー入力を保存し、出力時にデータをサニタイズします。 Djangoのテンプレートは、このためのフィルタを提供します - 'エスケープ'は、すべてのHTMLタグをエスケープするものです。

入力時にデータをサニタイズする利点は2つあります。すべての古いデータを「祖父母」することなく、いつでもデータをサニタイズする方法を変更することができます。また、 「クリーンアップ」バージョンではなく、入力した元のデータを表示することができます。誤った時刻にデータをクリーンアップすることは、ダブルエスケープのようなものの主要な原因でもあります。

関連する問題