我正在django中创建一个登录表单。当我运行应用程序并填写用户名和密码字段时。该页面始终重定向到一个条件(用户名是否正确)。
代码如下:
def home(request):
if request.method == 'POST':
username = request.POST.get('user_name')
password = request.POST.get('password')
user = authenticate(user_name=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
# success
return render_to_response('registration/main_page.html',{'form':login},context_instance=RequestContext(request))
else:
#user was not active
return render_to_response('registration/q.html')
else:
# not a valid user
return render_to_response('registration/home.html')
else:
# URL was accessed directly
return render_to_response('registration/w.html')
它始终重定向到home.html
else:
#user was not active
return render_to_response('registration/home.html')
为什么会这样?
答案 0 :(得分:2)
authenticate()
功能需要username
而非user_name
。
试试这个:user = authenticate(username=username, password=password)
此外,您可以写if user is not None:
if user :
答案 1 :(得分:0)
看来你的函数在这里返回一个None对象:
if user is not None
您可以添加打印语句以固定它,
if request.method == 'POST':
username = request.POST.get('user_name')
password = request.POST.get('password')
print username # what does it return?
user = authenticate(user_name=username, password=password)
print user # what does it return?
if user is not None:
#...