Your login_user()
is a view. Thus, it needs to return an HttpResponse
object.
login()
actually takes the request and the user. Check out the Django docs for an example of how to use login()
correctly in a view.
Referring to the Django docs and your example, your login_user()
view should look something like this:
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.contrib.auth import authenticate, login
def login_user(request, template_name='registration/login.html'):
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)
# Redirect to a success page.
return HttpResponseRedirect('/home/')
else:
# Return a 'disabled account' error message
return render(request, template_name, {'error': 'disabled account'})
else:
# Return an 'invalid login' error message.
return render(request, template_name, {'error': 'invalid login'})