2012-04-23 10 views
0

私が確認したい5つのキーがあります.REQUESTです。ですから、first_name、last_name、age、gender、locationがすべてリクエストされていることを確認します.REQUEST。それから1つ以上が存在しない場合、どの属性が欠けているかを知りたい。Djangoのrequest.REQUESTに欠落している項目があるかどうかを確認する方法

if文を使用せずにこれを行う方法はありますか?

+3

はい。 [forms](https://docs.djangoproject.com/en/dev/topics/forms/) –

答えて

0
missing_keys = [] 
for i in ('item1', 'item2', 'item3'): 
    if i not in request.REQUEST: 
    missing_keys.append(i) 
1

あなたが期待キーのセット、および返されたキーのセットを作成し、それらを交差:

expected = set(['first_name', 'last_name', 'age']) 
got = set(request.REQUEST.keys()) 

if expected.issubset(got): 
    # Request contained everything you expected 
    # Bonus points: check if field was present but empty 
    for field in got: 
     if request.REQUEST[field].strip() == "": 
      # Field was present but empty 
else: 
    # Some things were different 
    print expected.difference(got) 

あなたはまた、非常に最初にexpectedに異なる方法を使用することができます。ここでは、expectedgotのサブセットであることを確認したので、gotには予想以上のものが含まれている可能性があります。それらが正確に同じであることを確認したい場合は、

if len(expected.difference(got)) == 0: 

に変更します(つまり、両者に差異がない場合)。

実際には、Django's built in Formsを使用してください。このようなことをするのはずっとうれしいです。組み込みセットを使用して

0
import sets 
missing = sets.Set(request.REQUEST.keys()).difference(['first_name', 'last_name', ...]) 

更新、:

set(request.REQUEST.keys()).difference(['first_name', 'last_name', ...])

+1

を使用してくださいなぜ組み込みセットタイプではなく、セットモジュールを使用するのですか?モジュールは非推奨ですbtw –

+0

@ビルダー良い点!私は答えを更新しました。ありがとう! – Willian

関連する問題