KeyError being thrown after logging in to Django admin
Question: I'm getting a pretty nasty KeyError after logging into the Django admin. It is
unable to find the key "user". If it helps, I have a model named "User".

How do I fix this? Could something be wrong with my configuration? I am using
the default admin configuration mentioned in the [Django
tutorials](https://docs.djangoproject.com/en/dev/intro/tutorial02/).

    
    
    [07/Feb/2012 19:04:52] "GET /web/admin/ HTTP/1.1" 500 1865
    
    http://localhost:8000/web/admin/
    Traceback (most recent call last):
      File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py", line 111, in get_response
        response = callback(request, *callback_args, **callback_kwargs)
      File "/usr/local/lib/python2.6/dist-packages/django/contrib/admin/sites.py", line 214, in wrapper
        return self.admin_view(view, cacheable)(*args, **kwargs)
      File "/usr/local/lib/python2.6/dist-packages/django/utils/decorators.py", line 93, in _wrapped_view
        response = view_func(request, *args, **kwargs)
      File "/usr/local/lib/python2.6/dist-packages/django/views/decorators/cache.py", line 79, in _wrapped_view_func
        response = view_func(request, *args, **kwargs)
      File "/usr/local/lib/python2.6/dist-packages/django/contrib/admin/sites.py", line 197, in inner
        return view(request, *args, **kwargs)
      File "/usr/local/lib/python2.6/dist-packages/django/views/decorators/cache.py", line 79, in _wrapped_view_func
        response = view_func(request, *args, **kwargs)
      File "/usr/local/lib/python2.6/dist-packages/django/contrib/admin/sites.py", line 382, in index
        context_instance=context_instance
      File "/usr/local/lib/python2.6/dist-packages/django/shortcuts/__init__.py", line 20, in render_to_response
        return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
      File "/usr/local/lib/python2.6/dist-packages/django/template/loader.py", line 188, in render_to_string
        return t.render(context_instance)
      File "/usr/local/lib/python2.6/dist-packages/django/template/base.py", line 123, in render
        return self._render(context)
      File "/usr/local/lib/python2.6/dist-packages/django/template/base.py", line 117, in _render
        return self.nodelist.render(context)
      File "/usr/local/lib/python2.6/dist-packages/django/template/base.py", line 744, in render
        bits.append(self.render_node(node, context))
      File "/usr/local/lib/python2.6/dist-packages/django/template/base.py", line 757, in render_node
        return node.render(context)
      File "/usr/local/lib/python2.6/dist-packages/django/template/loader_tags.py", line 127, in render
        return compiled_parent._render(context)
      File "/usr/local/lib/python2.6/dist-packages/django/template/base.py", line 117, in _render
        return self.nodelist.render(context)
      File "/usr/local/lib/python2.6/dist-packages/django/template/base.py", line 744, in render
        bits.append(self.render_node(node, context))
      File "/usr/local/lib/python2.6/dist-packages/django/template/base.py", line 757, in render_node
        return node.render(context)
      File "/usr/local/lib/python2.6/dist-packages/django/template/loader_tags.py", line 127, in render
        return compiled_parent._render(context)
      File "/usr/local/lib/python2.6/dist-packages/django/template/base.py", line 117, in _render
        return self.nodelist.render(context)
      File "/usr/local/lib/python2.6/dist-packages/django/template/base.py", line 744, in render
        bits.append(self.render_node(node, context))
      File "/usr/local/lib/python2.6/dist-packages/django/template/base.py", line 757, in render_node
        return node.render(context)
      File "/usr/local/lib/python2.6/dist-packages/django/template/loader_tags.py", line 64, in render
        result = block.nodelist.render(context)
      File "/usr/local/lib/python2.6/dist-packages/django/template/base.py", line 744, in render
        bits.append(self.render_node(node, context))
      File "/usr/local/lib/python2.6/dist-packages/django/template/base.py", line 757, in render_node
        return node.render(context)
      File "/usr/local/lib/python2.6/dist-packages/django/contrib/admin/templatetags/log.py", line 19, in render
        user_id = context[self.user].id
      File "/usr/local/lib/python2.6/dist-packages/django/template/context.py", line 55, in __getitem__
        raise KeyError(key)
    KeyError: u'user'
    
    [07/Feb/2012 19:06:28] "GET /web/admin/ HTTP/1.1" 500 1865
    

Here is part of my settings.py:

    
    
    # List of callables that know how to import templates from various sources.
    TEMPLATE_LOADERS = (
        'django.template.loaders.filesystem.Loader',
        'django.template.loaders.app_directories.Loader',
    #     'django.template.loaders.eggs.Loader',
    )
    
    TEMPLATE_CONTEXT_PROCESSORS = (
         'django.core.context_processors.request',
         'django.contrib.messages.context_processors.messages',
    )
    
    MIDDLEWARE_CLASSES = (
        'django.middleware.common.CommonMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'web.exception.Middleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
    #    'django.middleware.csrf.CsrfViewMiddleware',
    )
    
    TEMPLATE_DIRS = (
        BASE('web/templates')
    )
    
    INSTALLED_APPS = (
        'django.contrib.auth',
       'django.contrib.contenttypes',
        'django.contrib.sites',
        'django.contrib.sessions',
        'django.contrib.messages',
        ...
        'django_nose',
        # Uncomment the next line to enable the admin:
        'django.contrib.admin',
        # Uncomment the next line to enable admin documentation:
        # 'django.contrib.admindocs',
    )
    


Answer: Try adding this to your **TEMPLATE_CONTEXT_PROCESSORS** :

`django.contrib.auth.context_processors.auth`

It makes the `user` object available to templates through the RequestContext:
<https://docs.djangoproject.com/en/dev/ref/templates/api/#django-contrib-auth-
context-processors-auth>

