繁体   English   中英

如何判断Django中request.REQUEST是否缺少项目

[英]How to tell if there is a missing item in request.REQUEST in Django

我有五个要检查的键在request.REQUEST中。 因此,我想确保first_name,last_name,年龄,性别和位置都在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在开始的时候。 在这里,我检查了expectedgot的子集,因此got可能包含的内容超出了预期。 如果要检查它们是否完全相同,请将其更改为:

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

(即,如果两者之间的差异为零)。

但实际上,您应该使用Django的内置Forms 做这样的事情要好得多。

missing_keys = []
for i in ('item1', 'item2', 'item3'):
  if i not in request.REQUEST:
    missing_keys.append(i)
import sets
missing = sets.Set(request.REQUEST.keys()).difference(['first_name', 'last_name', ...])

使用内置集进行更新:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM