|
検索
カテゴリ
メモ帳
以前の記事
最新のコメント
ブログパーツ
ファン
|
2009年 02月 18日
Pylonsで入力された値を検証するには、FormEncodeのValidatorを使用します。
http://www.formencode.org/Validator.html Pylons0.9.7でValidatorを使ってみます。 Pylons0.9.6ではValidatorが暗黙でインポートされていましたが、 Pylons0.9.7では、明示的にインポートする必要があります。 http://pylonshq.com/docs/en/0.9.7/forms/#validating-user-input-with-formencode コントローラーにvalidateのインポートを追加します。 from pylons.decorators import validate 次に、検証ルールを記載するモジュール model/form.py を作成します。 # -*- coding:utf-8 -*- これで、documentという名前のテキストボックスに対して、 5文字以上、20文字以下の検証ルールを適用することができます。 コントローラーには @validate(schema=ValidateForm(), form='new') createはデータベースへの登録を実行するメソッドです。 実行前に検証を行ないたいメソッドの直前に、@validateを 記載します。 引数は、 schema:検証に使用するクラス名 form:検証に失敗した場合に実行するメソッド名 この場合、ValidateFormクラスの検証が失敗したら、 コントローラーのnewメソッドが実行されることになります。 このnewメソッドの内容ですが、 def new(self, format='html'): テンプレートを読み込んで表示するだけのメソッドです。 これだけで、 ・エラーになった場合、new.makoに直前に入力していた値を反映 ・エラーが発生した箇所の直前にエラーメッセージを挿入 ・エラーが発生したテキストボックスにスタイルシートを設定 という操作が自動的に実行されます。 エラーメッセージには「error-message」 エラーが発生したオブジェクトには「error」 というクラス名称が設定されます。 それなので、 span.error-message { このようなスタイルシートを宣言することで、エラー発生時 こんな感じで表示させることができます。 ![]() 以前は英語表示だったと思うのですが、 日本語表示されるよう変わっています。 ※日本語表示されないエラーもあります。
| |||||||||||||||||||||||||||||||||||||||||||||