首页 > 解决方案 > Django 查看错误:分配前引用的局部变量-> if 语句中的缺陷?

问题描述

在我的 Django 视图中,我有以下 if 循环:

for i in queryset:

    if i['mnemonic'] == '#0602###95EUR00':
        cash_ps_totbank_eur = i['value'] 
        cash_ps_totbank_eur_sub1 = i['value']

    if i['mnemonic'] == '#0602###90EUR00':
        cash_ps_totbank_eur += i['value']        # Working
        cash_ps_totbank_eur_sub2 = i['value']

    if i['mnemonic'] == '#0602###95USD00':
        cash_ps_totbank_usd = i['value']
        cash_ps_totbank_usd_sub1 = i['value']

    if i['mnemonic'] == '#0602###2095900':
        cash_ps_totbank_usd += i['value']       # NOT working & throwing error
        cash_ps_totbank_usd_sub2 = i['value']

加载模板时,Django 向我抛出一个错误,说local variable 'cash_ps_totbank_usd' referenced before assignment. 我在这里做与上面八行相同的事情,即向之前在 if 循环中启动的变量添加一个值,因此应该已经为其分配了一个值。

我试图检查以 _sub1 和 _sub2 结尾的变量,查询集和字符串之间的相等检查是否可能存在错误。但这种情况并非如此。_sub1 和 _sub2 的变量工作得很好,并获得了正确的值。

知道我在这里缺少什么吗?

标签: djangoif-statementvariablesdjango-views

解决方案


您需要在 for 循环之外定义这两个变量:

cash_ps_totbank_eur = int()
cash_ps_totbank_usd = int()

因为如果语句第一次if i['mnemonic'] == '#0602###90EUR00':计算结果为,True那么这个cash_ps_totbank_eur += i['value']等于的语句cash_ps_totbank_eur = cash_ps_totbank_eur + i['value']将导致错误,因为cash_ps_totbank_eur尚未定义


推荐阅读