错误产生
分配前引用的局部变量'url'
我在SO中搜索过这个问题,但是大多数似乎都解决了这个问题,即变量是在函数外部声明的,需要全局化,或者在类的成员函数中访问变量。这种情况不同。我不明白为什么我不允许在同一个函数内调用url
。
查看下面的代码,在登录功能内的任何地方都不能访问url
吗?我相信如果这是C / C ++就是这种情况。为什么这有什么不同?
代码
def login(request):
#
#no url declaration here
#
if request.POST:
…
url = 'main.login.html'
user = authenticate(username=username,password=password)
if user is not None:
if user.is_active:
auth_login(request, user)
state = 'You are logged in'
url = 'main.home.html'
else:
state = 'You are not logged in due to error'
else:
state = 'Incorrect username or password'
…
render_to_response(url,{'state':state,'username':username},context_instance=RequestContext(request)
回溯指向最后一行。
render_to_response(url,{'state':state,'username':username},context_instance=RequestContext(request)
答案 0 :(得分:2)
在您的代码中,您进行了两次更改,它将正常工作。在检查post方法之前定义url并在render_to_response语句中使用return关键字。
def login(request):
url = 'main.login.html'
state = ''
if request.POST:
user = authenticate(username=username,password=password)
if user is not None:
if user.is_active:
auth_login(request, user)
state = 'You are logged in'
url = 'main.home.html'
else:
state = 'You are not logged in due to error'
else:
state = 'Incorrect username or password'
return render_to_response(url,{'state':state,'username':username},context_instance=RequestContext(request)
如果在检查POST方法之前没有定义url和state,那么它将引发GET请求的错误。