This is a minimalistic step-by-step guide on how to start using django-configglue to manage the settings for your Django project.
First we need to create the schema that will define the settings we want to support in our configuration files.
Start by creating a module called schema.py, such as
import django
from configglue import schema
from django_configglue.schema import schemas
DjangoSchema = schemas.get(django.get_version())
class MySchema(DjangoSchema):
foo = schema.IntOption()
bar = schema.BoolOption()
The MySchema schema will support all Django supported settings (as defined in the DjangoSchema schema), and it introduces two custom options (foo and bar in the default section – __main__).
Now we need to create the configuration file where we specify the values we want to have for our options. Create a file called main.cfg
[__main__]
foo = 1
bar = true
[django]
database_engine = sqlite3
database_name = :memory:
installed_apps =
django.contrib.auth
django.contrib.contenttypes
django.contrib.sessions
django.contrib.sites
django_configglue
Finally, we need to implement the glue between configglue and Django, so that it can read out the settings defined in our configuration files.
Replace the standard settings.py module in your project with
from django_configglue.utils import configglue
from .schema import MySchema
# make django aware of configglue-based configuration
configglue(MySchema, ['main.cfg'], __name__)
And let’s make sure everything works as expected
$ python manage.py settings --validate
Settings appear to be fine.
That’s it! Your project now uses django-configglue to manage it’s configuration. Congratulations!
If you want to know more about django-configglue, read Using django-configglue: a more in-depth walkthrough.