赋值前引用的局部变量

Posted

技术标签:

【中文标题】赋值前引用的局部变量【英文标题】:Local Variable referenced before assignment 【发布时间】:2011-11-06 06:51:41 【问题描述】:

我想知道你们是否可以帮忙。我正在尝试做一个简单的视图,它将用户发送到客户端创建表单,但我不断收到此错误:

'form'

查看我的代码,我看不出有什么问题。

def add_client(request):
    user = request.user
    if request.method =='POST':
        form = AddClientForm(request.POST)
        if form.is_valid():
            client = form.save(commit=False)
            client.save()
            return HttpResponseRedirect('/')
        else:
            form = AddClientForm()

    return render_to_response('clients/addClient.html',  'form': form, 'user': user, , context_instance=RequestContext(request))

谁能告诉我哪里出错了?

【问题讨论】:

请包含完整的回溯,它会告诉你问题发生在哪一行。 您的代码示例中的缩进是否正确? 【参考方案1】:

您几乎肯定想要取消缩进这部分:

else:
    form = AddClientForm()

即在页面的初始GET上,使用一个空白的客户端表单,然后在页面被POST的时候,使用请求POST数据来填写表单对象。

【讨论】:

谢谢,这有助于我的一些代码在 PyCharm 中给我同样的信息【参考方案2】:

这是正在发生的事情:

    if 块未被输入。 form 变量未定义。 然后您尝试在return 语句中引用form 变量。

至于如何修复它,这真的由您决定。如果请求方法不是POST,解决方法取决于您希望代码执行的操作。

【讨论】:

当请求方法不是POST时你想返回什么? 我要做的是生成一个表单,用户可以在其中输入信息并提交..如果用户不满足表单的需求,则不要提交表单跨度> 不知道request.method != 'POST'时需要写什么代码来处理这种情况。只有你知道。比如你想做return render_to_response(...)吗?

以上是关于赋值前引用的局部变量的主要内容,如果未能解决你的问题,请参考以下文章

UnboundLocalError:赋值前引用的局部变量()

django中的“赋值前引用的局部变量'响应'”错误

JVM学习--局部变量表

在python中赋值之前引用的局部变量'form'

js删除局部变量的实现方法

在赋值之前可能会引用局部变量 - Python