繁体   English   中英

UnboundLocalError,分配前访问了局部变量,但不是吗?

[英]UnboundLocalError, local variable accessed before assignment, but not?

我正在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()东西,它就可以工作。 怎么了

解决此问题的最简单方法是删除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是我具体指的)。

如前所述,代码看起来是正确的,因此我希望在发布问题时会丢失一些内容(也许第二个if语句并未真正缩进)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM