私が確認したい5つのキーがあります.REQUESTです。ですから、first_name、last_name、age、gender、locationがすべてリクエストされていることを確認します.REQUEST。それから1つ以上が存在しない場合、どの属性が欠けているかを知りたい。Djangoのrequest.REQUESTに欠落している項目があるかどうかを確認する方法
if文を使用せずにこれを行う方法はありますか?
私が確認したい5つのキーがあります.REQUESTです。ですから、first_name、last_name、age、gender、locationがすべてリクエストされていることを確認します.REQUEST。それから1つ以上が存在しない場合、どの属性が欠けているかを知りたい。Djangoのrequest.REQUESTに欠落している項目があるかどうかを確認する方法
if文を使用せずにこれを行う方法はありますか?
missing_keys = []
for i in ('item1', 'item2', 'item3'):
if i not in request.REQUEST:
missing_keys.append(i)
あなたが期待キーのセット、および返されたキーのセットを作成し、それらを交差:
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's built in Formsを使用してください。このようなことをするのはずっとうれしいです。組み込みセットを使用して
import sets
missing = sets.Set(request.REQUEST.keys()).difference(['first_name', 'last_name', ...])
更新、:
set(request.REQUEST.keys()).difference(['first_name', 'last_name', ...])
を使用してくださいなぜ組み込みセットタイプではなく、セットモジュールを使用するのですか?モジュールは非推奨ですbtw –
@ビルダー良い点!私は答えを更新しました。ありがとう! – Willian
はい。 [forms](https://docs.djangoproject.com/en/dev/topics/forms/) –