django-confit has been created with the following concepts in mind:

  • Local configuration should not live in code. Altering sys.path or putting local settings module within code is not a good practice. Moreover, code should not vary from one environment to another.
  • Environment variables are not enough to manage settings. You can load settings from environment variables, but you can also do it from files. Files have many benefits (backup, version control...).
  • Settings imported from external locations should (always) be validated.
  • Application should expose the full list of settings they use.
  • Documentation about applications settings should be auto-generated.