Dynamic Django settings context processor

Here's a nice way of easily passing only certain settings variables to the template. Because of the way Django looks up context processors, we need a little hack with sys.modules.

import sys from django.conf import settings as django_settings class SettingsProcessor(object): def __getattr__(self, attr): if attr == '__file__': # autoreload support in dev server return __file__ else: return lambda request: {attr: getattr(django_settings, attr)} sys.modules[__name__ + '.settings'] = SettingsProcessor()

Assuming this is placed in a file called utils/context_processors.py , you can use this from the settings.py file like so:

TEMPLATE_CONTEXT_PROCESSORS = ( # .... 'utils.context_processors.settings.GOOGLEMAPS_KEY', 'utils.context_processors.settings.TEMPLATE_DEBUG', 'utils.context_processors.settings.MAXMIND_URL', )

Nice and simple.