2012-01-25 4 views
1

Eclipse/Pydevを使用して、djangoでフォーム検証の全プロセスを進めようとしています。私は全く予想外の結果を得ています。Pydevコンソール:変数値をチェックすると、コードが予期せず実行されているようです。

parent_form = form_class(request.POST, initial=initial) 
debug_type = type(parent_form._errors) 
msg = _('created successfully') # <------- Set breakpoint here 

ここでは、コンソールでの取り組みについて説明します。

debug_type 
<type 'NoneType'> 
type(parent_form._errors) 
<class 'django.forms.util.ErrorDict'> 

2つの値が異なる理由はわかりません。最初の値は「正しい」ものでなければなりません。

djangoソースには、parent_form.errorsという名前のものが存在します(エラーの前にアンダースコアがないことに注意してください)。これはparent_formのプロパティです。そのプロパティを取得すると、_errorsがNoneからErrorDictになるようなコードが実行されます。しかし、私はではない parent_form.errorsを取得、私はparent_form._errorsを求めています。

PyDevがparent_form.errorsを要求せずに評価することは可能でしょうか?もしそうなら、なぜですか?そして、なぜ私はこの静かな評価を得ることができないのですか?getterの中でbreak_pointをparent_form.errorsに設定していますか?

答えて

2

ブレークポイントをヒットし、PyDevが変数ビュー(各変数の値を見ることができる)を塗りつぶすと、スコープ内のすべての変数に対してdir()を実行し、スコープ内のすべての変数に対してそれぞれgetattrそれらの変数が見つかりました(これはデバッガの機能を単純化したものですが、それに近いものです)。

変数によっては副作用があるかどうかはわかりません。変数が実際に要求されているかどうかを確認するために、変数ビューを閉じることができます(ただし、閉じていても何かを要求している可能性がありますが、それについてはわかりません)。

関連する問題