我在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()
的东西,它就可以了。出了什么问题?
答案 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语句并没有真正缩进)。