【问题标题】:Why does this code have this error: "Expected:)"?为什么这段代码有这个错误:“预期:)”?
【发布时间】:2011-04-14 03:40:56
【问题描述】:

我在最后一个else: 之后的return render_to_response 行的此代码上收到来自Aptana“预期:)”的错误。我一生都无法弄清楚为什么会这样,因为据我所知,我已经关闭了所有括号。我猜这实际上是其他一些错误,而 Aptana(Eclipse 分支)不够聪明,无法给我实际的错误。当我尝试使用此文件中的另一个视图加载网页时,它只告诉我这是一个语法错误。

def login(request):
    if request.method == 'Post':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(username=username, password=password)
        if user is not None:
            if user.is_active:
                login(request, user)
                return HttpResponseRedirect('/')
            else:
                #return a 'disabled account' error message
                return HttpResponseRedirect('/disabled_account/')
        else:
            return render_to_response('login.html', {
                                         'failed_login' : True,
                                         'form' : AuthenticationForm()
                                                    },
                                        context_instance=RequestContext(request),
                                     )
    else:
        return render_to_response('login.html' {
                                        'failed_login' : False,
                                        'form' : AuthenticationForm()
                                                    },
                                        context_instance=RequestContext(request),
                                     )

【问题讨论】:

  • 运行代码时会发生什么?您应该从解释器而不是 IDE 中获取提示。
  • 我不知道 python,但您似乎在 login.html 之后在 else 部分中缺少 ,。检查它:)
  • @Rafe,正如我所说,它只是告诉我存在语法错误。
  • 只是为了澄清,“)”是预期的。由于缺少逗号,IDE 认为您忘记关闭函数的括号。

标签: python django aptana


【解决方案1】:

else: 部分中的“login.html”后缺少逗号

【讨论】:

    【解决方案2】:

    您在最后的返回行中的模板名称后面缺少逗号。 你有:

    return render_to_response('login.html' {
                                        'failed_login' : False,
                                        'form' : AuthenticationForm()
                                                    },
                                        context_instance=RequestContext(request),
                                     )
    

    但应该是:

    return render_to_response('login.html', {
                                        'failed_login' : False,
                                        'form' : AuthenticationForm()
                                                    },
                                        context_instance=RequestContext(request),
                                     )
    

    【讨论】: