0

我有五个要检查的键在 request.REQUEST 中。所以我想确保 first_name、last_name、age、gender 和 location 都在 request.REQUEST 中。然后,如果一个或多个不存在,我想告诉哪些属性丢失了。

有没有办法在不使用一堆 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 回答