Manually Authenticating a User:

django.contrib.auth defines a method named login, with the following signature (in the file

def login(request, user):
        Persist a user id and a backend in the request. This way a user doesn't
        have to reauthenticate on every request.

login takes request and the user object. However, passing a standard user object and a request, doesn’t log the user in, when logging in manually, because authenticate() sets an extra argument on the user object, that is used for logging in.


When loggining in the user manually, first use the authenticate method.:

user_auth = authenticate(username=new_user.username, password=pw1)
login(request, user_auth)