Skip to main content

PyPi Build Status of the master branch Coverage

Often it is needed to make some of your Django project’s settings accessible from within templates. This app provides a simple mechanism for doing just that.

Principles:

  • Explicit is better than implicit: Only explicitly listed settings keys are exported to templates.

  • Errors should never pass silently: Accessing an undefined or unexported setting key from a template results in an exception.

Tested on Python 2.7+, Django 1.5+.

Installation

$ pip install django-settings-export

Add 'django_settings_export.settings_export' to template context processor list in your settings.py:

Django 1.8 and newer:

TEMPLATES = [
    {
        # …
        'OPTIONS': {
            'context_processors': [
                # …
                'django_settings_export.settings_export',
            ],
        },
    },
]

Django older than 1.8:

TEMPLATE_CONTEXT_PROCESSORS = [
    # [...]
    'django_settings_export.settings_export',
]

Usage

All settings that should be made accessible from templates need to be explicitly listed in settings.SETTINGS_EXPORT:

# settings.py

DEBUG = True
GA_ID = 'UA-00000-0'

SETTINGS_EXPORT = [
    'DEBUG',
    'GA_ID',
]

Now you can access those exported settings from your templates via settings.<KEY>:

<!-- template.html -->

{% if not settings.DEBUG %}
    <script>ga('create', '{{ settings.GA_ID }}', 'auto');</script>
{% endif %}

The settings variable is an instance of dict subclass, so you use all the methods dict provides. For example, you can iterate over the keys and values using , settings.keys, settings.values, settings.items, etc:

{% for key, value in settings.items %}
    {{ key }}: {{ value }}
{% endfor %}

Changing the settings variable name

If you wish to change the name of the context variable to something besides settings, add SETTINGS_EXPORT_VARIABLE_NAME = 'custom_name' to your settings.py. This is useful when some other plugin is already adding settings to your template contexts.

# settings.py
FOO = 'bar'
SETTINGS_EXPORT = ['FOO']
SETTINGS_EXPORT_VARIABLE_NAME = 'my_config'
<!-- template.html -->

{{ my_config.FOO }}

Exceptions

These custom exceptions can be thrown:

  • Listing an undefined setting key in SETTINGS_EXPORT results in an UndefinedSettingError.

  • Accessing a unexported setting key on the settings object in a template results in an UnexportedSettingError.

All subclass from django_settings_export.SettingsExportError.

Demo & Tests

See the source code of the bundled demo app.

Development

$ cd tests

# Run demo
$ python manage.py runserver

# Run tests on current Python
$ python manage.py test

# Run tests on all Pythons
$ tox

Change Log

See CHANGELOG.

Licence

BSD. See LICENCE for more details.

Contact

Jakub Roztocil

Metadata

Release files for django-settings-export 1.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-settings-export 1.2.1
File Size Uploaded
django-settings-export-1.2.1.tar.gz 5.0 kB Details

Release files / django-settings-export-1.2.1.tar.gz

Download URL django-settings-export-1.2.1.tar.gz
Size 5.0 kB
Tags Source
SHA-256 checksum
How to use checksums
fceeae49fc597f654c1217415d8e049fc81c930b7154f5d8f28c432db738ff79
BLAKE2b-256 checksum
How to use checksums
d6729848a2d631dad70d7ea582540f0619e1a7ecf31b3a117de9d9f2b6b28029
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.2.1 This release

1 release file

1.1.0

1 release file

1.0.6

2 release files

1.0.5

2 release files

1.0.4

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page