【问题标题】:What does is not None stands for in django/python?在 django/python 中不是 None 代表什么?
【发布时间】:2019-03-30 13:50:47
【问题描述】:

当我的 html 表单字段为空时,我想显示无效消息。但是下面的代码在字段为空时触发“if块”,在字段不为空时触发“else块”。

我这样写是因为这似乎可以完成这项工作。但我很困惑。不应该反过来吗?

if(request.POST['amount'] is not None):

   os.remove(os.path.join(settings.MEDIA_ROOT,str(uploaded_file.name) ))
            messages.success(request,('Invalid Field....'))
            return redirect('assignFine')
else:
   form = Fine(amount=request.POST['amount'],numberPlate=num,policeUsername=request.user)
            form.save()

【问题讨论】:

  • 如果输入有效,您是否测试过它是否进入else 块?

标签: python django django-views


【解决方案1】:

这个条件:

if request.POST['amount'] is not None:

意思是:如果参数存在(是None),做下面的块,否则做else部分。为此,如果amount 存在,我们应该创建一个Fine,否则我们会发出错误信号。您的条件似乎发生了变化!

根据amount 参数的预期值,我也会考虑使用这个版本:

if request.POST['amount']:
  # create fine
else:
  # signal an error

它更短,意味着:如果amount 不是 None,或'',或False,或0 或 Python 中的任何其他虚假值,请执行下面的块,否则执行else 部分。

【讨论】:

  • 更详细,但对于许多可能有效的虚假值的用途也更精确
  • 但如果是如你所说。那么 if request.POST['amount'] is not none: 不应该在数量存在时执行块吗?
  • @sayeedk06 哦!我现在明白你的意思了。我相信你的条件被转换了!还要检查参数中到达的值,可能不是None,但它是一个空字符串。这就是为什么我更喜欢回答中的第二个版本。
【解决方案2】:

您可以使用下面的语句来检查amount参数是否存在于request.POST中:

if 'amount' in request.POST:
    # Your code
else:
    # Else case

您可以使用not in 运算符来否定 if/else 短语:

if 'amount' not in request.POST:
    # No 'amount' available
else:
    # There is 'amount' parameter

[编辑]

要检查该值是否不是emptyFalseNone,您可以这样检查:

if 'amount' in request.POST and request.POST['amount']:
    # 'amount' exists, and is not 'empty', 'False', or 'None'

【讨论】:

  • 如果amount 在字典中,但带有None 值怎么办?
猜你喜欢
  • 2012-12-26
  • 2021-04-01
  • 2012-08-10
  • 1970-01-01
  • 2021-01-13
  • 2019-05-08
  • 2020-10-17
  • 1970-01-01
  • 2012-08-14
相关资源
最近更新 更多