2011-08-29 53 views
4

我想知道你们是否可以提供帮助。我试图做它向用户发送到客户端创建表单一个简单的观点,但我不断收到此错误:分配之前引用的本地变量

local variable 'form' referenced before assignment

我的代码来看,我看不出什么错。

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)) 

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

感谢

+0

请包括完整的追溯,这将是你的问题发生的线。 –

+0

是您的代码示例中正确的缩进吗? – steabert

+1

固定缩进 – TheLifeOfSteve

回答

13

这是正在发生的事情:

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

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

+0

好吧,我在哪里开始解决这个问题? – TheLifeOfSteve

+0

当请求方法不是'POST'时,你想要返回什么? –

+0

我想要做的是生成一个表格,其中用户可以输入信息并提交..如果用户不满足表格的需求,那么不要提交表格 – TheLifeOfSteve

7

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

else: 
    form = AddClientForm() 

也就是说,在页面的初始获取,使用空白的客户端的形式,然后在页面张贴,使用请求POST数据填写表单对象。

+0

谢谢,这有助于我在PyCharm中给我的同样信息 – MichaelF

相关问题