How to change site-specific settings

Two ways to define these site-specific settings follow.

The management command print_settings (which depends on the app django-extensions, a dev-dependency installable via pip install argus-server[dev]) will print out the complete settings that will be used.

Variant 1: Using environment variables in the shell

A subset of settings can be set per 12 factor, using environment variables.

Note that environment variables can only contain numbers and strings as values. Strings have to be enclosed with double quotes, "a simple string". Use 1 to represent Boolean True, 0 for False.

In bash/zsh you set an environment variable like this:

$ export DEBUG=1

Deployment-specific systems like docker-compose, heroku or kubernetes might have their own way of setting environment variables.

Variant 2: Using a settings.py file

A settings file is a regular importable Python file. The filename MUST start with a letter, MUST only contain letters, numbers or underscores (“_”), and MUST end with “.py”.

This allows the use of more complex Python data types than environment variables. A settings file may override anything set via environment variable.

argus.site.settings.dev has reasonable defaults for development while argus.site.settings.prod is a good starting point for production.

Note

The development settings file assumes that the optional development dependencies are installed. You can get them via pip install argus-server[dev].

Development

Do this in your working directory, which could be the checked out argus-server repo.

This assumes that you have a local settings file (we recommend calling it “localsettings.py” since that is hidden by .gitignore) as a sibling of src/.

At the top of this local settings file you should have:

from argus.site.settings.dev import *

There, now you can alter anything.

If you don’t want to use any of the development dependencies you can import from argus.htmx.settings instead.

Settings can be tested in localsettings.py and moved to other settings files later.

Production

Copy the contents of argus.site.settings.prod to your own settings-file. It does not depend on any development dependencies. It will also turn on some extra nagging for settings that MUST be set for production.

For production you MUST set :setting::ALLOWED_HOSTS, note how it’s commented out in argus.site.settings.prod.

Use an expressive name for your settings.py file, such as production_settings.py.

You can combine settings files and environment variables.