【问题标题】: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))

谁能告诉我哪里出错了?

【问题讨论】:

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

标签: python django django-models django-views


【解决方案1】:

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

else:
    form = AddClientForm()

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

【讨论】:

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

这是正在发生的事情:

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

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

【讨论】:

  • 当请求方法不是POST时你想返回什么?
  • 我要做的是生成一个表单,用户可以在其中输入信息并提交..如果用户不满足表单的需求,则不要提交表单跨度>
  • 不知道request.method != 'POST'时需要写什么代码来处理这种情况。只有你知道。比如你想做return render_to_response(...)吗?
猜你喜欢
  • 1970-01-01
  • 2013-08-02
  • 2018-01-12
  • 1970-01-01
相关资源
最近更新 更多