UnboundLocalError,在赋值之前访问的局部变量,但不是?

时间:2011-12-06 00:23:26

标签: python django

我在Django做了一些非常简单的事情,我得到了这个非常奇怪的错误:

UnboundLocalError at /me/profile/edit/
local variable 'form' referenced before assignment

这是我的代码:

if request.method == "POST":
    form = MyForm(request.POST)
    if form.is_valid():
        print "Yes"
else:
    form = MyForm(user=request.user)

为什么此代码会抛出该错误?这很简单,但如果我拿出if form.is_valid()的东西,它就可以了。出了什么问题?

2 个答案:

答案 0 :(得分:3)

解决此问题的最简单方法是删除else子句:

form = MyForm(request.POST or None)

if request.method == 'POST':
    if form.is_valid():
        print 'Yes'

Danny Greenfeld的高级Django表单使用演示文稿就是一个很好的例子:http://www.slideshare.net/pydanny/advanced-django-forms-usage(幻灯片33是我特别提到的)。

答案 1 :(得分:2)

如发布的那样,代码看起来是正确的,所以我希望在发布问题时可能会丢失一些东西(也许第二个if语句并没有真正缩进)。