0

嗨,我有一个函数,它可以从数据库中获取总共四个值中的一个值,在此基础上我需要根据值显示一些数据

update_grp = User_Groups.objects.get(user_id=request.user.id)
    showopen = update_grp.profilegroup
    if showopen == "trendy":
      slidercategory = Category.objects.get(id = 65)
    elif showopen == "Classic":
      slidercategory = Category.objects.get(id = 63)
    elif showopen == "Glam":
      slidercategory = Category.objects.get(id = 81)
    elif showopen == "Bohemian":
      slidercategory = Category.objects.get(id = 62)
    sliderproduct = slidercategory.product_set.all()  

但我收到以下错误

local variable 'slidercategory' referenced before assignment

请建议我在哪里做错了

4

2 回答 2

1

您的showopen变量不在代码提供的四个选项中。如果您没有调试器来查看变量实际上是什么,则在代码中添加一些打印语句,将变量打印到控制台。

update_grp = User_Groups.objects.get(user_id=request.user.id)
    showopen = update_grp.profilegroup
    print showopen
    #..
于 2013-02-27T09:11:08.047 回答
0

您缺少“else”子句,因此解释器看到可能存在“slidercategory”在您的函数范围内不可用的情况(没有匹配的 if 语句)。

在函数顶部添加 else 子句或分配 sliderproduct = 'somedefaultvalue',另一种解决方案是将返回栏移动到 if 子句的范围内,这将导致 None 在没有匹配的 if 时返回.

>>> def test(foo):
...     if foo == 2:
...        bar = 'hello'
...     elif foo == 3:
...        bar = 'goodbye'
...     return bar
>>> test(2)
>>> 'hello'
>>> test(1)
UnboundLocalError: local variable 'bar' referenced before assignment
于 2013-02-27T09:17:23.570 回答