Here’s a list of settings available in Django core and their default values.
Settings provided by contrib apps are listed below, followed by a topical index
of the core settings. For introductory material, see the settings topic
guide.
ABSOLUTE_URL_OVERRIDES
Default: {}
(Empty dictionary)
A dictionary mapping "app_label.model_name"
strings to functions that take
a model object and return its URL. This is a way of overriding
get_absolute_url()
methods on a per-installation basis. Example:
ABSOLUTE_URL_OVERRIDES = {
'blogs.weblog': lambda o: "/blogs/%s/" % o.slug,
'news.story': lambda o: "/stories/%s/%s/" % (o.pub_year, o.slug),
}
Note that the model name used in this setting should be all lower-case, regardless
of the case of the actual model class name.
ADMINS
Default: ()
(Empty tuple)
A tuple that lists people who get code error notifications. When
DEBUG=False
and a view raises an exception, Django will email these people
with the full exception information. Each member of the tuple should be a tuple
of (Full name, email address). Example:
(('John', 'john@example.com'), ('Mary', 'mary@example.com'))
Note that Django will email all of these people whenever an error happens.
See Error reporting for more information.
ALLOWED_HOSTS
Default: []
(Empty list)
A list of strings representing the host/domain names that this Django site can
serve. This is a security measure to prevent an attacker from poisoning caches
and password reset emails with links to malicious hosts by submitting requests
with a fake HTTP Host
header, which is possible even under many
seemingly-safe web server configurations.
Values in this list can be fully qualified names (e.g. 'www.example.com'
),
in which case they will be matched against the request’s Host
header
exactly (case-insensitive, not including port). A value beginning with a period
can be used as a subdomain wildcard: '.example.com'
will match
example.com
, www.example.com
, and any other subdomain of
example.com
. A value of '*'
will match anything; in this case you are
responsible to provide your own validation of the Host
header (perhaps in a
middleware; if so this middleware must be listed first in
MIDDLEWARE_CLASSES
).
Note
If you want to also allow the fully qualified domain name (FQDN), which
some browsers can send in the Host header, you must explicitly add another
ALLOWED_HOSTS entry that includes a trailing period. This entry can also be
a subdomain wildcard:
ALLOWED_HOSTS = [
'.example.com', # Allow domain and subdomains
'.example.com.', # Also allow FQDN and subdomains
]
If the Host
header (or X-Forwarded-Host
if
USE_X_FORWARDED_HOST
is enabled) does not match any value in this
list, the django.http.HttpRequest.get_host()
method will raise
SuspiciousOperation
.
When DEBUG
is True
or when running tests, host validation is
disabled; any host will be accepted. Thus it’s usually only necessary to set it
in production.
This validation only applies via get_host()
;
if your code accesses the Host
header directly from request.META
you
are bypassing this security protection.
ALLOWED_INCLUDE_ROOTS
Default: ()
(Empty tuple)
A tuple of strings representing allowed prefixes for the {% ssi %}
template
tag. This is a security measure, so that template authors can’t access files
that they shouldn’t be accessing.
For example, if ALLOWED_INCLUDE_ROOTS
is ('/home/html', '/var/www')
,
then {% ssi /home/html/foo.txt %}
would work, but {% ssi /etc/passwd %}
wouldn’t.
APPEND_SLASH
Default: True
When set to True
, if the request URL does not match any of the patterns
in the URLconf and it doesn’t end in a slash, an HTTP redirect is issued to the
same URL with a slash appended. Note that the redirect may cause any data
submitted in a POST request to be lost.
The APPEND_SLASH
setting is only used if
CommonMiddleware
is installed
(see Middleware). See also PREPEND_WWW
.
CACHES
Default:
{
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
}
}
A dictionary containing the settings for all caches to be used with
Django. It is a nested dictionary whose contents maps cache aliases
to a dictionary containing the options for an individual cache.
The CACHES
setting must configure a default
cache;
any number of additional caches may also be specified. If you
are using a cache backend other than the local memory cache, or
you need to define multiple caches, other options will be required.
The following cache options are available.
BACKEND
Default: ''
(Empty string)
The cache backend to use. The built-in cache backends are:
'django.core.cache.backends.db.DatabaseCache'
'django.core.cache.backends.dummy.DummyCache'
'django.core.cache.backends.filebased.FileBasedCache'
'django.core.cache.backends.locmem.LocMemCache'
'django.core.cache.backends.memcached.MemcachedCache'
'django.core.cache.backends.memcached.PyLibMCCache'
You can use a cache backend that doesn’t ship with Django by setting
BACKEND
to a fully-qualified path of a cache
backend class (i.e. mypackage.backends.whatever.WhateverCache
).
Writing a whole new cache backend from scratch is left as an exercise
to the reader; see the other backends for examples.
KEY_FUNCTION
A string containing a dotted path to a function that defines how to
compose a prefix, version and key into a final cache key. The default
implementation is equivalent to the function:
def make_key(key, key_prefix, version):
return ':'.join([key_prefix, str(version), key])
You may use any key function you want, as long as it has the same
argument signature.
See the cache documentation for more
information.
KEY_PREFIX
Default: ''
(Empty string)
A string that will be automatically included (prepended by default) to
all cache keys used by the Django server.
See the cache documentation for more information.
LOCATION
Default: ''
(Empty string)
The location of the cache to use. This might be the directory for a
file system cache, a host and port for a memcache server, or simply an
identifying name for a local memory cache. e.g.:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': '/var/tmp/django_cache',
}
}
OPTIONS
Default: None
Extra parameters to pass to the cache backend. Available parameters
vary depending on your cache backend.
Some information on available parameters can be found in the
Cache Backends documentation. For more information,
consult your backend module’s own documentation.
TIMEOUT
Default: 300
The number of seconds before a cache entry is considered stale.
VERSION
Default: 1
The default version number for cache keys generated by the Django server.
See the cache documentation for more information.
CACHE_MIDDLEWARE_ALIAS
Default: default
The cache connection to use for the cache middleware.
CACHE_MIDDLEWARE_ANONYMOUS_ONLY
Default: False
Deprecated since version 1.6: This setting was largely ineffective because of using cookies for sessions
and CSRF. See the Django 1.6 release notes for more
information.
If the value of this setting is True
, only anonymous requests (i.e., not
those made by a logged-in user) will be cached. Otherwise, the middleware
caches every page that doesn’t have GET or POST parameters.
If you set the value of this setting to True
, you should make sure you’ve
activated AuthenticationMiddleware
.
CSRF_COOKIE_DOMAIN
Default: None
The domain to be used when setting the CSRF cookie. This can be useful for
easily allowing cross-subdomain requests to be excluded from the normal cross
site request forgery protection. It should be set to a string such as
".example.com"
to allow a POST request from a form on one subdomain to be
accepted by a view served from another subdomain.
Please note that the presence of this setting does not imply that Django’s CSRF
protection is safe from cross-subdomain attacks by default - please see the
CSRF limitations section.
CSRF_COOKIE_HTTPONLY
Default: False
Whether to use HttpOnly
flag on the CSRF cookie. If this is set to
True
, client-side JavaScript will not to be able to access the CSRF cookie.
See SESSION_COOKIE_HTTPONLY
for details on HttpOnly
.
CSRF_COOKIE_PATH
Default: '/'
The path set on the CSRF cookie. This should either match the URL path of your
Django installation or be a parent of that path.
This is useful if you have multiple Django instances running under the same
hostname. They can use different cookie paths, and each instance will only see
its own CSRF cookie.
CSRF_COOKIE_SECURE
Default: False
Whether to use a secure cookie for the CSRF cookie. If this is set to True
,
the cookie will be marked as “secure,” which means browsers may ensure that the
cookie is only sent under an HTTPS connection.
CSRF_FAILURE_VIEW
Default: 'django.views.csrf.csrf_failure'
A dotted path to the view function to be used when an incoming request
is rejected by the CSRF protection. The function should have this signature:
def csrf_failure(request, reason="")
where reason
is a short message (intended for developers or logging, not for
end users) indicating the reason the request was rejected. See
Cross Site Request Forgery protection.
DATABASES
Default: {}
(Empty dictionary)
A dictionary containing the settings for all databases to be used with
Django. It is a nested dictionary whose contents maps database aliases
to a dictionary containing the options for an individual database.
The DATABASES
setting must configure a default
database;
any number of additional databases may also be specified.
The simplest possible settings file is for a single-database setup using
SQLite. This can be configured using the following:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'mydatabase',
}
}
When connecting to other database backends, such as MySQL, Oracle, or
PostgreSQL, additional connection parameters will be required. See
the ENGINE
setting below on how to specify
other database types. This example is for PostgreSQL:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydatabase',
'USER': 'mydatabaseuser',
'PASSWORD': 'mypassword',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
The following inner options that may be required for more complex
configurations are available:
ENGINE
Default: ''
(Empty string)
The database backend to use. The built-in database backends are:
'django.db.backends.postgresql_psycopg2'
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'
You can use a database backend that doesn’t ship with Django by setting
ENGINE
to a fully-qualified path (i.e.
mypackage.backends.whatever
). Writing a whole new database backend from
scratch is left as an exercise to the reader; see the other backends for
examples.
HOST
Default: ''
(Empty string)
Which host to use when connecting to the database. An empty string means
localhost. Not used with SQLite.
If this value starts with a forward slash ('/'
) and you’re using MySQL,
MySQL will connect via a Unix socket to the specified socket. For example:
If you’re using MySQL and this value doesn’t start with a forward slash, then
this value is assumed to be the host.
If you’re using PostgreSQL, by default (empty HOST
), the connection
to the database is done through UNIX domain sockets (‘local’ lines in
pg_hba.conf
). If your UNIX domain socket is not in the standard location,
use the same value of unix_socket_directory
from postgresql.conf
.
If you want to connect through TCP sockets, set HOST
to ‘localhost’
or ‘127.0.0.1’ (‘host’ lines in pg_hba.conf
).
On Windows, you should always define HOST
, as UNIX domain sockets
are not available.
NAME
Default: ''
(Empty string)
The name of the database to use. For SQLite, it’s the full path to the database
file. When specifying the path, always use forward slashes, even on Windows
(e.g. C:/homes/user/mysite/sqlite3.db
).
CONN_MAX_AGE
Default: 0
The lifetime of a database connection, in seconds. Use 0
to close database
connections at the end of each request — Django’s historical behavior — and
None
for unlimited persistent connections.
OPTIONS
Default: {}
(Empty dictionary)
Extra parameters to use when connecting to the database. Available parameters
vary depending on your database backend.
Some information on available parameters can be found in the
Database Backends documentation. For more information,
consult your backend module’s own documentation.
PASSWORD
Default: ''
(Empty string)
The password to use when connecting to the database. Not used with SQLite.
PORT
Default: ''
(Empty string)
The port to use when connecting to the database. An empty string means the
default port. Not used with SQLite.
USER
Default: ''
(Empty string)
The username to use when connecting to the database. Not used with SQLite.
TEST_CHARSET
Default: None
The character set encoding used to create the test database. The value of this
string is passed directly through to the database, so its format is
backend-specific.
Supported for the PostgreSQL (postgresql_psycopg2
) and MySQL (mysql
)
backends.
TEST_COLLATION
Default: None
The collation order to use when creating the test database. This value is
passed directly to the backend, so its format is backend-specific.
Only supported for the mysql
backend (see the MySQL manual for details).
TEST_DEPENDENCIES
Default: ['default']
, for all databases other than default
,
which has no dependencies.
The creation-order dependencies of the database. See the documentation
on controlling the creation order of test databases for details.
TEST_MIRROR
Default: None
The alias of the database that this database should mirror during
testing.
This setting exists to allow for testing of master/slave
configurations of multiple databases. See the documentation on
testing master/slave configurations for details.
TEST_NAME
Default: None
The name of database to use when running the test suite.
If the default value (None
) is used with the SQLite database engine, the
tests will use a memory resident database. For all other database engines the
test database will use the name 'test_' + DATABASE_NAME
.
See The test database.
TEST_CREATE
Default: True
This is an Oracle-specific setting.
If it is set to False
, the test tablespaces won’t be automatically created
at the beginning of the tests and dropped at the end.
TEST_USER
Default: None
This is an Oracle-specific setting.
The username to use when connecting to the Oracle database that will be used
when running tests. If not provided, Django will use 'test_' + USER
.
TEST_USER_CREATE
Default: True
This is an Oracle-specific setting.
If it is set to False
, the test user won’t be automatically created at the
beginning of the tests and dropped at the end.
TEST_PASSWD
Default: None
This is an Oracle-specific setting.
The password to use when connecting to the Oracle database that will be used
when running tests. If not provided, Django will use a hardcoded default value.
TEST_TBLSPACE
Default: None
This is an Oracle-specific setting.
The name of the tablespace that will be used when running tests. If not
provided, Django will use 'test_' + NAME
.
TEST_TBLSPACE_TMP
Default: None
This is an Oracle-specific setting.
The name of the temporary tablespace that will be used when running tests. If
not provided, Django will use 'test_' + NAME + '_temp'
.
DEBUG
Default: False
A boolean that turns on/off debug mode.
Never deploy a site into production with DEBUG
turned on.
Did you catch that? NEVER deploy a site into production with DEBUG
turned on.
One of the main features of debug mode is the display of detailed error pages.
If your app raises an exception when DEBUG
is True
, Django will
display a detailed traceback, including a lot of metadata about your
environment, such as all the currently defined Django settings (from
settings.py
).
As a security measure, Django will not include settings that might be
sensitive (or offensive), such as SECRET_KEY
or
PROFANITIES_LIST
. Specifically, it will exclude any setting whose
name includes any of the following:
'API'
'KEY'
'PASS'
'PROFANITIES_LIST'
'SECRET'
'SIGNATURE'
'TOKEN'
Note that these are partial matches. 'PASS'
will also match PASSWORD,
just as 'TOKEN'
will also match TOKENIZED and so on.
Still, note that there are always going to be sections of your debug output
that are inappropriate for public consumption. File paths, configuration
options and the like all give attackers extra information about your server.
It is also important to remember that when running with DEBUG
turned on, Django will remember every SQL query it executes. This is useful
when you’re debugging, but it’ll rapidly consume memory on a production server.
Finally, if DEBUG
is False
, you also need to properly set
the ALLOWED_HOSTS
setting. Failing to do so will result in all
requests being returned as “Bad Request (400)”.
DEBUG_PROPAGATE_EXCEPTIONS
Default: False
If set to True, Django’s normal exception handling of view functions
will be suppressed, and exceptions will propagate upwards. This can
be useful for some test setups, and should never be used on a live
site.
DEFAULT_CHARSET
Default: 'utf-8'
Default charset to use for all HttpResponse
objects, if a MIME type isn’t
manually specified. Used with DEFAULT_CONTENT_TYPE
to construct the
Content-Type
header.
DEFAULT_CONTENT_TYPE
Default: 'text/html'
Default content type to use for all HttpResponse
objects, if a MIME type
isn’t manually specified. Used with DEFAULT_CHARSET
to construct
the Content-Type
header.
DEFAULT_FROM_EMAIL
Default: 'webmaster@localhost'
Default email address to use for various automated correspondence from the
site manager(s). This doesn’t include error messages sent to ADMINS
and MANAGERS
; for that, see SERVER_EMAIL
.
DEFAULT_INDEX_TABLESPACE
Default: ''
(Empty string)
Default tablespace to use for indexes on fields that don’t specify
one, if the backend supports it (see Tablespaces).
DEFAULT_TABLESPACE
Default: ''
(Empty string)
Default tablespace to use for models that don’t specify one, if the
backend supports it (see Tablespaces).
DISALLOWED_USER_AGENTS
Default: ()
(Empty tuple)
List of compiled regular expression objects representing User-Agent strings that
are not allowed to visit any page, systemwide. Use this for bad robots/crawlers.
This is only used if CommonMiddleware
is installed (see
Middleware).
EMAIL_BACKEND
Default: 'django.core.mail.backends.smtp.EmailBackend'
The backend to use for sending emails. For the list of available backends see
Sending email.
EMAIL_FILE_PATH
Default: Not defined
The directory used by the file
email backend to store output files.
EMAIL_HOST
Default: 'localhost'
The host to use for sending email.
See also EMAIL_PORT
.
EMAIL_HOST_PASSWORD
Default: ''
(Empty string)
Password to use for the SMTP server defined in EMAIL_HOST
. This
setting is used in conjunction with EMAIL_HOST_USER
when
authenticating to the SMTP server. If either of these settings is empty,
Django won’t attempt authentication.
See also EMAIL_HOST_USER
.
EMAIL_HOST_USER
Default: ''
(Empty string)
Username to use for the SMTP server defined in EMAIL_HOST
.
If empty, Django won’t attempt authentication.
See also EMAIL_HOST_PASSWORD
.
EMAIL_PORT
Default: 25
Port to use for the SMTP server defined in EMAIL_HOST
.
EMAIL_SUBJECT_PREFIX
Default: '[Django] '
Subject-line prefix for email messages sent with django.core.mail.mail_admins
or django.core.mail.mail_managers
. You’ll probably want to include the
trailing space.
EMAIL_USE_TLS
Default: False
Whether to use a TLS (secure) connection when talking to the SMTP server.
FILE_CHARSET
Default: 'utf-8'
The character encoding used to decode any files read from disk. This includes
template files and initial SQL data files.
FILE_UPLOAD_HANDLERS
Default:
("django.core.files.uploadhandler.MemoryFileUploadHandler",
"django.core.files.uploadhandler.TemporaryFileUploadHandler",)
A tuple of handlers to use for uploading. See Managing files for details.
FILE_UPLOAD_MAX_MEMORY_SIZE
Default: 2621440
(i.e. 2.5 MB).
The maximum size (in bytes) that an upload will be before it gets streamed to
the file system. See Managing files for details.
FILE_UPLOAD_PERMISSIONS
Default: None
The numeric mode (i.e. 0o644
) to set newly uploaded files to. For
more information about what these modes mean, see the documentation for
os.chmod()
.
If this isn’t given or is None
, you’ll get operating-system
dependent behavior. On most platforms, temporary files will have a mode
of 0o600
, and files saved from memory will be saved using the
system’s standard umask.
Warning
Always prefix the mode with a 0.
If you’re not familiar with file modes, please note that the leading
0
is very important: it indicates an octal number, which is the
way that modes must be specified. If you try to use 644
, you’ll
get totally incorrect behavior.
FILE_UPLOAD_TEMP_DIR
Default: None
The directory to store data temporarily while uploading files. If None
,
Django will use the standard temporary directory for the operating system. For
example, this will default to ‘/tmp’ on *nix-style operating systems.
See Managing files for details.
FIRST_DAY_OF_WEEK
Default: 0
(Sunday)
Number representing the first day of the week. This is especially useful
when displaying a calendar. This value is only used when not using
format internationalization, or when a format cannot be found for the
current locale.
The value must be an integer from 0 to 6, where 0 means Sunday, 1 means
Monday and so on.
FIXTURE_DIRS
Default: ()
(Empty tuple)
List of directories searched for fixture files, in addition to the
fixtures
directory of each application, in search order.
Note that these paths should use Unix-style forward slashes, even on Windows.
See Providing initial data with fixtures and Fixture loading.
FORCE_SCRIPT_NAME
Default: None
If not None
, this will be used as the value of the SCRIPT_NAME
environment variable in any HTTP request. This setting can be used to override
the server-provided value of SCRIPT_NAME
, which may be a rewritten version
of the preferred value or not supplied at all.
IGNORABLE_404_URLS
Default: ()
List of compiled regular expression objects describing URLs that should be
ignored when reporting HTTP 404 errors via email (see
Error reporting). Regular expressions are matched against
request's full paths
(including
query string, if any). Use this if your site does not provide a commonly
requested file such as favicon.ico
or robots.txt
, or if it gets
hammered by script kiddies.
This is only used if
BrokenLinkEmailsMiddleware
is enabled (see
Middleware).
INSTALLED_APPS
Default: ()
(Empty tuple)
A tuple of strings designating all applications that are enabled in this Django
installation. Each string should be a full Python path to a Python package that
contains a Django application, as created by django-admin.py startapp
.
App names must be unique
The application names (that is, the final dotted part of the
path to the module containing models.py
) defined in
INSTALLED_APPS
must be unique. For example, you can’t
include both django.contrib.auth
and myproject.auth
in
INSTALLED_APPS.
INTERNAL_IPS
Default: ()
(Empty tuple)
A tuple of IP addresses, as strings, that:
LANGUAGE_CODE
Default: 'en-us'
A string representing the language code for this installation. This should be in
standard language ID format. For example, U.S. English
is "en-us"
. See also the list of language identifiers and
Internationalization and localization.
USE_I18N
must be active for this setting to have any effect.
It serves two purposes:
- If the locale middleware isn’t in use, it decides which translation is served
to all users.
- If the locale middleware is active, it provides the fallback translation when
no translation exist for a given literal to the user’s preferred language.
See How Django discovers language preference for more details.
LANGUAGES
Default: A tuple of all available languages. This list is continually growing
and including a copy here would inevitably become rapidly out of date. You can
see the current list of translated languages by looking in
django/conf/global_settings.py
(or view the online source).
The list is a tuple of two-tuples in the format
(language code, language name
) – for example,
('ja', 'Japanese')
.
This specifies which languages are available for language selection. See
Internationalization and localization.
Generally, the default value should suffice. Only set this setting if you want
to restrict language selection to a subset of the Django-provided languages.
If you define a custom LANGUAGES
setting, you can mark the
language names as translation strings using the
ugettext_lazy()
function.
Here’s a sample settings file:
from django.utils.translation import ugettext_lazy as _
LANGUAGES = (
('de', _('German')),
('en', _('English')),
)
LOCALE_PATHS
Default: ()
(Empty tuple)
A tuple of directories where Django looks for translation files.
See How Django discovers translations.
Example:
LOCALE_PATHS = (
'/home/www/project/common_files/locale',
'/var/local/translations/locale'
)
Django will look within each of these paths for the <locale_code>/LC_MESSAGES
directories containing the actual translation files.
LOGGING
Default: A logging configuration dictionary.
A data structure containing configuration information. The contents of
this data structure will be passed as the argument to the
configuration method described in LOGGING_CONFIG
.
Among other things, the default logging configuration passes HTTP 500 server
errors to an email log handler when DEBUG
is False
. See also
Configuring logging.
You can see the default logging configuration by looking in
django/utils/log.py
(or view the online source).
LOGGING_CONFIG
Default: 'django.utils.log.dictConfig'
A path to a callable that will be used to configure logging in the
Django project. Points at a instance of Python’s dictConfig
configuration method by default.
If you set LOGGING_CONFIG
to None
, the logging
configuration process will be skipped.
MANAGERS
Default: ()
(Empty tuple)
A tuple in the same format as ADMINS
that specifies who should get
broken link notifications when
BrokenLinkEmailsMiddleware
is enabled.
MIDDLEWARE_CLASSES
Default:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',)
A tuple of middleware classes to use. See Middleware.
NUMBER_GROUPING
Default: 0
Number of digits grouped together on the integer part of a number.
Common use is to display a thousand separator. If this setting is 0
, then
no grouping will be applied to the number. If this setting is greater than
0
, then THOUSAND_SEPARATOR
will be used as the separator between
those groups.
Note that if USE_L10N
is set to True
, then the locale-dictated
format has higher precedence and will be applied instead.
See also DECIMAL_SEPARATOR
, THOUSAND_SEPARATOR
and
USE_THOUSAND_SEPARATOR
.
ROOT_URLCONF
Default: Not defined
A string representing the full Python import path to your root URLconf. For example:
"mydjangoapps.urls"
. Can be overridden on a per-request basis by
setting the attribute urlconf
on the incoming HttpRequest
object. See How Django processes a request for details.
SECRET_KEY
Default: ''
(Empty string)
A secret key for a particular Django installation. This is used to provide
cryptographic signing, and should be set to a unique,
unpredictable value.
django-admin.py startproject
automatically adds a
randomly-generated SECRET_KEY
to each new project.
Warning
Keep this value secret.
Running Django with a known SECRET_KEY
defeats many of Django’s
security protections, and can lead to privilege escalation and remote code
execution vulnerabilities.
Django will now refuse to start if SECRET_KEY
is not set.
SEND_BROKEN_LINK_EMAILS
Default: False
Whether to send an email to the MANAGERS
each time somebody visits
a Django-powered page that is 404ed with a non-empty referer (i.e., a broken
link). This is only used if CommonMiddleware
is installed (see
Middleware). See also IGNORABLE_404_URLS
and
Error reporting.
SERIALIZATION_MODULES
Default: Not defined.
A dictionary of modules containing serializer definitions (provided as
strings), keyed by a string identifier for that serialization type. For
example, to define a YAML serializer, use:
SERIALIZATION_MODULES = { 'yaml' : 'path.to.yaml_serializer' }
SERVER_EMAIL
Default: 'root@localhost'
The email address that error messages come from, such as those sent to
ADMINS
and MANAGERS
.
Why are my emails sent from a different address?
This address is used only for error messages. It is not the address that
regular email messages sent with send_mail()
come from; for that, see DEFAULT_FROM_EMAIL
.
SIGNING_BACKEND
Default: ‘django.core.signing.TimestampSigner’
The backend used for signing cookies and other data.
See also the Cryptographic signing documentation.
TEMPLATE_CONTEXT_PROCESSORS
Default:
("django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages")
A tuple of callables that are used to populate the context in RequestContext
.
These callables take a request object as their argument and return a dictionary
of items to be merged into the context.
TEMPLATE_DEBUG
Default: False
A boolean that turns on/off template debug mode. If this is True
, the fancy
error page will display a detailed report for any exception raised during
template rendering. This report contains the relevant snippet of the template,
with the appropriate line highlighted.
Note that Django only displays fancy error pages if DEBUG
is True
, so
you’ll want to set that to take advantage of this setting.
See also DEBUG
.
TEMPLATE_LOADERS
Default:
('django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader')
A tuple of template loader classes, specified as strings. Each Loader
class
knows how to import templates from a particular source. Optionally, a tuple can be
used instead of a string. The first item in the tuple should be the Loader
’s
module, subsequent items are passed to the Loader
during initialization. See
The Django template language: For Python programmers.
TEMPLATE_STRING_IF_INVALID
Default: ''
(Empty string)
Output, as a string, that the template system should use for invalid (e.g.
misspelled) variables. See How invalid variables are handled..
TEST_RUNNER
Default: 'django.test.runner.DiscoverRunner'
The name of the class to use for starting the test suite. See
Using different testing frameworks.
Previously the default TEST_RUNNER
was
django.test.simple.DjangoTestSuiteRunner
.
TIME_ZONE
Default: 'America/Chicago'
A string representing the time zone for this installation, or None
. See
the list of time zones.
Note
Since Django was first released with the TIME_ZONE
set to
'America/Chicago'
, the global setting (used if nothing is defined in
your project’s settings.py
) remains 'America/Chicago'
for backwards
compatibility. New project templates default to 'UTC'
.
Note that this isn’t necessarily the time zone of the server. For example, one
server may serve multiple Django-powered sites, each with a separate time zone
setting.
When USE_TZ
is False
, this is the time zone in which Django
will store all datetimes. When USE_TZ
is True
, this is the
default time zone that Django will use to display datetimes in templates and
to interpret datetimes entered in forms.
Django sets the os.environ['TZ']
variable to the time zone you specify in
the TIME_ZONE
setting. Thus, all your views and models will
automatically operate in this time zone. However, Django won’t set the TZ
environment variable under the following conditions:
- If you’re using the manual configuration option as described in
manually configuring settings, or
- If you specify
TIME_ZONE = None
. This will cause Django to fall back to
using the system timezone. However, this is discouraged when USE_TZ
= True
, because it makes conversions between local time and UTC
less reliable.
If Django doesn’t set the TZ
environment variable, it’s up to you
to ensure your processes are running in the correct environment.
Note
Django cannot reliably use alternate time zones in a Windows environment.
If you’re running Django on Windows, TIME_ZONE
must be set to
match the system time zone.
USE_I18N
Default: True
A boolean that specifies whether Django’s translation system should be enabled.
This provides an easy way to turn it off, for performance. If this is set to
False
, Django will make some optimizations so as not to load the
translation machinery.
See also LANGUAGE_CODE
, USE_L10N
and USE_TZ
.
USE_L10N
Default: False
A boolean that specifies if localized formatting of data will be enabled by
default or not. If this is set to True
, e.g. Django will display numbers and
dates using the format of the current locale.
See also LANGUAGE_CODE
, USE_I18N
and USE_TZ
.
USE_TZ
Default: False
A boolean that specifies if datetimes will be timezone-aware by default or not.
If this is set to True
, Django will use timezone-aware datetimes internally.
Otherwise, Django will use naive datetimes in local time.
See also TIME_ZONE
, USE_I18N
and USE_L10N
.
USE_X_FORWARDED_HOST
Default: False
A boolean that specifies whether to use the X-Forwarded-Host header in
preference to the Host header. This should only be enabled if a proxy
which sets this header is in use.
WSGI_APPLICATION
Default: None
The full Python path of the WSGI application object that Django’s built-in
servers (e.g. runserver
) will use. The django-admin.py
startproject
management command will create a simple
wsgi.py
file with an application
callable in it, and point this setting
to that application
.
If not set, the return value of django.core.wsgi.get_wsgi_application()
will be used. In this case, the behavior of runserver
will be
identical to previous Django versions.