我要检查的五个密钥是否在request.REQUEST中。所以我想确保first_name,last_name,年龄,性别和位置都在request.REQUEST中。然后,如果不存在一个或多个,我想告诉哪些属性丢失。
有没有办法在不使用一堆if语句的情况下执行此操作?
答案 0 :(得分: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's built in Forms。做这样的事情要好得多。
答案 1 :(得分:0)
missing_keys = []
for i in ('item1', 'item2', 'item3'):
if i not in request.REQUEST:
missing_keys.append(i)
答案 2 :(得分:0)
import sets
missing = sets.Set(request.REQUEST.keys()).difference(['first_name', 'last_name', ...])
使用内置集更新:
set(request.REQUEST.keys()).difference(['first_name', 'last_name', ...])