0

確認したい 5 つのキーが request.REQUEST にあります。したがって、first_name、last_name、age、gender、および location がすべて request.REQUEST に含まれていることを確認したいと思います。次に、1 つ以上が存在しない場合は、どの属性が欠落しているかを伝えたいと思います。

一連の if ステートメントを使用せずにこれを行う方法はありますか?

4

3 に答える 3

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。ここでexpectedは、 が のサブセットであることを確認したgotので、got予想以上のものが含まれている可能性があります。それらがまったく同じであることを確認したい場合は、次のように変更します。

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

(つまり、両者の間に差がない場合)。

しかし、実際には、Django の組み込み Formsを使用する必要があります。このようなことをする方がずっといいです。

于 2012-04-23T06:59:48.507 に答える
0
import sets
missing = sets.Set(request.REQUEST.keys()).difference(['first_name', 'last_name', ...])

組み込みセットを使用して更新します。

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

于 2012-04-23T07:32:53.620 に答える
0
missing_keys = []
for i in ('item1', 'item2', 'item3'):
  if i not in request.REQUEST:
    missing_keys.append(i)
于 2012-04-23T06:57:46.797 に答える