Python / Django返回所有真正的变量

时间:2016-06-23 15:30:15

标签: python django python-2.7 if-statement

我正在尝试验证变量条件是否大于0然后如果是,那么text变量将为true。我有相当数量的这些作为通知我想在我的代码中显示但是为了我的问题我将只列出三个这里是我的代码:

notifications1 = 100
if notifications1 > 1:
    text1 = [{
                    'link': 'error1',
                    'icon_class': 'fa',
                    'icon': 'fa-calendar-check-o',
                    'color': 'info',
                    'text': SINVPartMismatch.description

            }]
else:
    text1 = None

notifications2 = 50
if notifications2 > 1:
    text2 = [{
                    'link': 'error1',
                    'icon_class': 'fa',
                    'icon': 'fa-calendar-check-o',
                    'color': 'info',
                    'text': INVNoPart.description

            }]
else:
    text2 = None

notifications3 = 0
if notifications3 > 1:
    text3 = [{
                    'link': 'error1',
                    'icon_class': 'fa',
                    'icon': 'fa-calendar-check-o',
                    'color': 'info',
                    'text': INBinNoInventoryMaster.description

            }]
else:
    text3 = None

return text1, text2, text3

当我运行它时,我得到错误“在赋值之前引用的UnboundLocalError局部变量'text3'”。基本上,如果数字大于0,我希望它显示文本变量,当它达到0时不要跳过任何文本变量。我很欣赏任何有关让我朝着正确方向前进的见解!

**编辑 - 现在当我运行它时认为它们都是空白的并且不显示“文本”描述但如果我只返回一个text1,它将显示返回部分中的text2。

2 个答案:

答案 0 :(得分:2)

我对Django了解不多,但我知道你的代码有什么问题。正如错误所述,您在分配text3之前使用了text3。这是一个解释:

if notifications3 > 1:
    text3 = [{
                'link': 'error1',
                'icon_class': 'fa',
                'icon': 'fa-calendar-check-o',
                'color': 'info',
                'text': description
            }]

else:
    text = [{
                'link': 'error1',
                'icon_class': 'fa',
                'icon': 'fa-calendar-check-o',
                'color': 'info',
                'text': 'There are no errors!'
            }]
return text, text1, text2, text3

如果您查看上面的代码(这是包含text3的所有代码),您会看到text3时不会分配notifications3 <= 1。那么Python如何返回一个未赋值的变量呢?它没有。它返回一个错误。

正如@advance512建议的那样,您可以执行以下操作:

text = [{}]
text1 = [{}]
text2 = [{}]
text3 = [{}]

或者

text = None
text1 = None
text2 = None
text3 = None

答案 1 :(得分:1)

由于text3,您遗漏了textnotifications3中某些内容的定义,具体取决于else的值。在执行代码修改其值之前,请尝试为这两个变量设置默认值。