分配前引用的局部变量

时间:2011-08-29 19:29:22

标签: python django django-models django-views

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

  分配前引用的

局部变量'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))

有人告诉我哪里出错了吗?

2 个答案:

答案 0 :(得分:13)

这就是发生的事情:

  1. 未输入if块。
  2. 未定义form变量。
  3. 然后,您尝试引用form声明中的return变量。
  4. 关于如何解决它,这真的是你要决定的。修复的内容取决于您希望代码在请求方法不是POST时执行的操作。

答案 1 :(得分:7)

你几乎肯定想要缩进这一部分:

else:
    form = AddClientForm()

也就是说,在页面的初始GET上,使用空白客户端表单,然后在页面发布时,使用请求POST数据填写表单对象。