---
url: "https://vueda.dev/v3/reference/api/py/vueda.core.default_settings.md"
title: "core.default_settings"
---

# core.default_settings

## Overview

Default Django settings factory for VUEDA applications.

## Classes

- [EnvLike](/v3/reference/api/py/vueda.core.default_settings/EnvLike.md)

## `get_defaults` {#get_defaults}

Get a sane and consistent set of default django settings, dotenv lookup keys &amp; defaults and return them as a dict.

You can put this in your settings modules like so:

```python
# Environs-style adapter:
# from environs import Env
# env = Env()
# env.read_env(str(ROOT_DIR / ".env.local"))
# env.read_env(str(ROOT_DIR / ".env"))

# TOML adapter:
from vueda.core.config import TomlEnv, load_toml
from vueda.core.default_settings import get_defaults
env = TomlEnv({**load_toml(ROOT_DIR / "config.toml"), **load_toml(ROOT_DIR / "config.local.toml")})

locals().update(get_defaults(env))
```

`env` is an env-like adapter providing `__call__`, `bool`, `int`, `float`, `list`, and `dj_db_url`,
among others.

Email is configured through Django's deprecated `EMAIL_BACKEND` and `EMAIL_TIMEOUT` settings by
default, since `EMAIL_BACKEND` still works on Django 6.1 and third-party email packages may not yet
support `MAILERS`. Pass `use_mailers=True` to configure Django 6.1's `MAILERS` setting instead; see the
[MAILERS migration guide](https://docs.djangoproject.com/en/6.1/howto/mailers-migration/).

`VUEDA_APPS` must include `vueda.history`. VUEDA ships pghistory event models and trigger operations in
the migrations of every app that owns a tracked model, so a configuration without the app cannot load
the migration graph. Omitting it raises `ImproperlyConfigured`.

### Signature {#get_defaults-signature}

`get_defaults(env, use_mailers)`

#### Parameters {#get_defaults-parameters}

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="get_defaults-param-env">env</span> | `EnvLike` | yes |  |  |
| <span id="get_defaults-param-use_mailers">use_mailers</span> | `bool` | no | `False` |  |

### Source {#get_defaults-source}

`server/vueda/core/default_settings.py:95`

## `get_production_defaults` {#get_production_defaults}

Additional settings for production environments, causing env to require things that aren't required in development.

### Signature {#get_production_defaults-signature}

`get_production_defaults(env)`

#### Parameters {#get_production_defaults-parameters}

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="get_production_defaults-param-env">env</span> | `EnvLike` | yes |  |  |

### Source {#get_production_defaults-source}

`server/vueda/core/default_settings.py:541`

## Source

`server/vueda/core/default_settings.py`
