確認したい 5 つのキーが request.REQUEST にあります。したがって、first_name、last_name、age、gender、および location がすべて request.REQUEST に含まれていることを確認したいと思います。次に、1 つ以上が存在しない場合は、どの属性が欠落しているかを伝えたいと思います。
一連の if ステートメントを使用せずにこれを行う方法はありますか?
期待するキーのセットと返されたキーのセットを作成し、それらを交差させます。
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
。ここでexpected
は、 が のサブセットであることを確認したgot
ので、got
予想以上のものが含まれている可能性があります。それらがまったく同じであることを確認したい場合は、次のように変更します。
if len(expected.difference(got)) == 0:
(つまり、両者の間に差がない場合)。
しかし、実際には、Django の組み込み Formsを使用する必要があります。このようなことをする方がずっといいです。
import sets
missing = sets.Set(request.REQUEST.keys()).difference(['first_name', 'last_name', ...])
組み込みセットを使用して更新します。
set(request.REQUEST.keys()).difference(['first_name', 'last_name', ...])
missing_keys = []
for i in ('item1', 'item2', 'item3'):
if i not in request.REQUEST:
missing_keys.append(i)