2009-11-08 11 views
10

Djangoフォームシステムを経由せずにDjangoを使用して入力文字列を消去する方法はありますか?djangoフォームクラスを使用せずに入力文字列を消去する

つまり、フォーム入力をAJAX経由で行うコードを書いていますので、djangoが提供するフォームモデル全体をスキップしています。しかし、私はデータベースに提出する前に入力をきれいにしたい。

+0

これは、フォームのためのものです。フォームの表示に使用したかどうかにかかわらず、フォームを使用して入力を検証できます。 –

+0

フォームに余分なフィールドを渡したいと思うでしょう:http://stackoverflow.com/a/9663056/895245 –

答えて

15

Djangoフォームモデルはレンダリングフォームだけではなく、フォーム(GET/POST)入力の処理とサニタイズに関するものです。です。 AJAXリクエストのPOSTまたはGETデータがサーバーに到達すると、フォームデータと本質的に区別できません。私はあなたのAJAX要求のモデルであるフォームモデルの作成を主張します。たとえば、POSTの

考える:それはそれは本当に問題ではありません、あなたのサーバーに当たった時点で、AJAX要求またはフォームから来ている可能性が

POST /login.jsp HTTP/1.1 
Host: www.mysite.com 
User-Agent: Mozilla/4.0 
Content-Length: 27 
Content-Type: application/x-www-form-urlencoded 

userid=joe&password=guessme 

!確かにGETまたはPOSTデータがどこから来ることが通常ですが、あなたはAJAXリクエストを表現するためのフォームモデルを作成した場合、それはあなたが得るフォーム:)

からするを持っていんので、それらはフォームモデルと呼ばれていますすべてのフックとそれに付属しているサニタイズとそれはもう少し "django-esque"です。

を更新あなたのコメントについて:

私はあなたが複数のフォームクラスを持っているだろうと想像。明らかにあなたのシステムがどのように設計されているのか分かりませんが、私はできるだけアドバイスを提供します。

あなたが言ったように、あなたはこのデータをサニタイズするために使用しますので、送信しているデータに基づいてフォームクラスを定義することになります。たとえば、名前、電子メール、CommentBodyデータを持つコメントを1つのFormクラスに送信するAJAXリクエストがあるとします。 Title、Author、およびArticleBodyを送信する新しい記事を投稿する別のAJAXリクエストがある場合、それは別のFormクラスになります。

あなたのAJAXリクエストには必ずフォームが必要なわけではありませんが、コメントを投稿するAJAXコールをお持ちの場合は、フォームとして扱わない可能性があります。(私は推測しているので)任意のデータをサニタイズします。

+0

私のシステムでは、AJAXを使ってデータベース内のデータを広範囲に更新しています。可能であれば、すべての入力を処理する一般的な使用ajax派生を作成することをお勧めしますか? – Karim

+1

私は応答で私の答えを編集しました、それはコメントでそれを詰め込もうとするよりも簡単だった:) –

+1

+1:フォームは入力を掃除するためのものです。 "2.提出されたデータを一連のバリデーションルールと照らし合わせてチェックする。フォームを使用して、Webサービスの入力を検証します。 –