Search code examples
pythonjinja2

Accessing OS environment variables from Jinja2 template


Is it possible to access a OS environment variable directly from a Jinja2 template?


Solution

  • Following @Renier's pointer about custom filters in the comments, I figured out a possible solution.

    Define a custom filter:

    def env_override(value, key):
      return os.getenv(key, value)
    

    Install the filter in the environment:

    env.filters['env_override'] = env_override
    

    Use the filter as follows:

    "test" : {{ "default" | env_override('CUSTOM') }}
    

    Where the appropriate environment variable can be set as:

    export CUSTOM=some_value
    

    If the environment variable is set the output will be:

    "test" : some_value
    

    Otherwise:

    "test" : default