title: django 1.6 where is the User field 'last_login' updated?
body: <p>The django usermodel django.contrib.auth.models.User has a field 'last_login' record the time when a user is successfully login. </p>
  
  <p>But I donot see a code such as 'last_login=datetime.now()' in function <code>from django.contrib.auth import login</code> or <code>from django.contrib.auth import authenticate</code>. I also checked the <code>django.contrib.auth.signals.user_logged_in</code>.</p>
  
  <p>where is the code for update the field 'last_login'?</p>
  
  <p>Below is all the related source coede,<strong>how is the login process invoke the update_last_login?</strong>  I don't see any code in login views or Authenticate function suoure code.</p>
  
  <pre><code>def update_last_login(sender, user, **kwargs):
      """
      A signal receiver which updates the last_login date for
      the user logging in.
      """
      user.last_login = timezone.now()
      user.save(update_fields=['last_login'])
  user_logged_in.connect(update_last_login)
  
  from django.dispatch import Signal
  user_logged_in = Signal(providing_args=['request', 'user'])
  
  @sensitive_post_parameters()
  @csrf_protect
  @never_cache
  def login(request, template_name='registration/login.html',
            redirect_field_name=REDIRECT_FIELD_NAME,
            authentication_form=AuthenticationForm,
            current_app=None, extra_context=None):
      """
      Displays the login form and handles the login action.
      """
      redirect_to = request.REQUEST.get(redirect_field_name, '')
  
      if request.method == "POST":
          form = authentication_form(request, data=request.POST)
          if form.is_valid():
  
              # Ensure the user-originating redirection url is safe.
              if not is_safe_url(url=redirect_to, host=request.get_host()):
                  redirect_to = resolve_url(settings.LOGIN_REDIRECT_URL)
  
              # Okay, security check complete. Log the user in.
              auth_login(request, form.get_user())
  
              return HttpResponseRedirect(redirect_to)
      else:
          form = authentication_form(request)
  
      current_site = get_current_site(request)
  
      context = {
          'form': form,
          redirect_field_name: redirect_to,
          'site': current_site,
          'site_name': current_site.name,
      }
      if extra_context is not None:
          context.update(extra_context)
      return TemplateResponse(request, template_name, context,
                              current_app=current_app)
  
  
  class ModelBackend(object):
      """
      Authenticates against settings.AUTH_USER_MODEL.
      """
  
      def authenticate(self, username=None, password=None, **kwargs):
          UserModel = get_user_model()
          if username is None:
              username = kwargs.get(UserModel.USERNAME_FIELD)
          try:
              user = UserModel._default_manager.get_by_natural_key(username)
              if user.check_password(password):
                  return user
          except UserModel.DoesNotExist:
              # Run the default password hasher once to reduce the timing
              # difference between an existing and a non-existing user (#20760).
              UserModel().set_password(password)
  </code></pre>