我有五个要检查的键在 request.REQUEST 中。所以我想确保 first_name、last_name、age、gender 和 location 都在 request.REQUEST 中。然后,如果一个或多个不存在,我想告诉哪些属性丢失了。
有没有办法在不使用一堆 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)