669 lines
22 KiB
Python
669 lines
22 KiB
Python
"""
|
|
Default Django settings. Override these with settings in the module pointed to
|
|
by the DJANGO_SETTINGS_MODULE environment variable.
|
|
"""
|
|
|
|
|
|
# This is defined here as a do-nothing function because we can't import
|
|
# django.utils.translation -- that module depends on the settings.
|
|
def gettext_noop(s):
|
|
return s
|
|
|
|
|
|
####################
|
|
# CORE #
|
|
####################
|
|
|
|
DEBUG = False
|
|
|
|
# Whether the framework should propagate raw exceptions rather than catching
|
|
# them. This is useful under some testing situations and should never be used
|
|
# on a live site.
|
|
DEBUG_PROPAGATE_EXCEPTIONS = False
|
|
|
|
# People who get code error notifications. In the format
|
|
# [('Full Name', 'email@example.com'), ('Full Name', 'anotheremail@example.com')]
|
|
ADMINS = []
|
|
|
|
# List of IP addresses, as strings, that:
|
|
# * See debug comments, when DEBUG is true
|
|
# * Receive x-headers
|
|
INTERNAL_IPS = []
|
|
|
|
# Hosts/domain names that are valid for this site.
|
|
# "*" matches anything, ".example.com" matches example.com and all subdomains
|
|
ALLOWED_HOSTS = []
|
|
|
|
# Local time zone for this installation. All choices can be found here:
|
|
# https://en.wikipedia.org/wiki/List_of_tz_zones_by_name (although not all
|
|
# systems may support all possibilities). When USE_TZ is True, this is
|
|
# interpreted as the default user time zone.
|
|
TIME_ZONE = "America/Chicago"
|
|
|
|
# If you set this to True, Django will use timezone-aware datetimes.
|
|
USE_TZ = False
|
|
|
|
# RemovedInDjango50Warning: It's a transitional setting helpful in migrating
|
|
# from pytz tzinfo to ZoneInfo(). Set True to continue using pytz tzinfo
|
|
# objects during the Django 4.x release cycle.
|
|
USE_DEPRECATED_PYTZ = False
|
|
|
|
# Language code for this installation. All choices can be found here:
|
|
# http://www.i18nguy.com/unicode/language-identifiers.html
|
|
LANGUAGE_CODE = "en-us"
|
|
|
|
# Languages we provide translations for, out of the box.
|
|
LANGUAGES = [
|
|
("af", gettext_noop("Afrikaans")),
|
|
("ar", gettext_noop("Arabic")),
|
|
("ar-dz", gettext_noop("Algerian Arabic")),
|
|
("ast", gettext_noop("Asturian")),
|
|
("az", gettext_noop("Azerbaijani")),
|
|
("bg", gettext_noop("Bulgarian")),
|
|
("be", gettext_noop("Belarusian")),
|
|
("bn", gettext_noop("Bengali")),
|
|
("br", gettext_noop("Breton")),
|
|
("bs", gettext_noop("Bosnian")),
|
|
("ca", gettext_noop("Catalan")),
|
|
("ckb", gettext_noop("Central Kurdish (Sorani)")),
|
|
("cs", gettext_noop("Czech")),
|
|
("cy", gettext_noop("Welsh")),
|
|
("da", gettext_noop("Danish")),
|
|
("de", gettext_noop("German")),
|
|
("dsb", gettext_noop("Lower Sorbian")),
|
|
("el", gettext_noop("Greek")),
|
|
("en", gettext_noop("English")),
|
|
("en-au", gettext_noop("Australian English")),
|
|
("en-gb", gettext_noop("British English")),
|
|
("eo", gettext_noop("Esperanto")),
|
|
("es", gettext_noop("Spanish")),
|
|
("es-ar", gettext_noop("Argentinian Spanish")),
|
|
("es-co", gettext_noop("Colombian Spanish")),
|
|
("es-mx", gettext_noop("Mexican Spanish")),
|
|
("es-ni", gettext_noop("Nicaraguan Spanish")),
|
|
("es-ve", gettext_noop("Venezuelan Spanish")),
|
|
("et", gettext_noop("Estonian")),
|
|
("eu", gettext_noop("Basque")),
|
|
("fa", gettext_noop("Persian")),
|
|
("fi", gettext_noop("Finnish")),
|
|
("fr", gettext_noop("French")),
|
|
("fy", gettext_noop("Frisian")),
|
|
("ga", gettext_noop("Irish")),
|
|
("gd", gettext_noop("Scottish Gaelic")),
|
|
("gl", gettext_noop("Galician")),
|
|
("he", gettext_noop("Hebrew")),
|
|
("hi", gettext_noop("Hindi")),
|
|
("hr", gettext_noop("Croatian")),
|
|
("hsb", gettext_noop("Upper Sorbian")),
|
|
("hu", gettext_noop("Hungarian")),
|
|
("hy", gettext_noop("Armenian")),
|
|
("ia", gettext_noop("Interlingua")),
|
|
("id", gettext_noop("Indonesian")),
|
|
("ig", gettext_noop("Igbo")),
|
|
("io", gettext_noop("Ido")),
|
|
("is", gettext_noop("Icelandic")),
|
|
("it", gettext_noop("Italian")),
|
|
("ja", gettext_noop("Japanese")),
|
|
("ka", gettext_noop("Georgian")),
|
|
("kab", gettext_noop("Kabyle")),
|
|
("kk", gettext_noop("Kazakh")),
|
|
("km", gettext_noop("Khmer")),
|
|
("kn", gettext_noop("Kannada")),
|
|
("ko", gettext_noop("Korean")),
|
|
("ky", gettext_noop("Kyrgyz")),
|
|
("lb", gettext_noop("Luxembourgish")),
|
|
("lt", gettext_noop("Lithuanian")),
|
|
("lv", gettext_noop("Latvian")),
|
|
("mk", gettext_noop("Macedonian")),
|
|
("ml", gettext_noop("Malayalam")),
|
|
("mn", gettext_noop("Mongolian")),
|
|
("mr", gettext_noop("Marathi")),
|
|
("ms", gettext_noop("Malay")),
|
|
("my", gettext_noop("Burmese")),
|
|
("nb", gettext_noop("Norwegian Bokmål")),
|
|
("ne", gettext_noop("Nepali")),
|
|
("nl", gettext_noop("Dutch")),
|
|
("nn", gettext_noop("Norwegian Nynorsk")),
|
|
("os", gettext_noop("Ossetic")),
|
|
("pa", gettext_noop("Punjabi")),
|
|
("pl", gettext_noop("Polish")),
|
|
("pt", gettext_noop("Portuguese")),
|
|
("pt-br", gettext_noop("Brazilian Portuguese")),
|
|
("ro", gettext_noop("Romanian")),
|
|
("ru", gettext_noop("Russian")),
|
|
("sk", gettext_noop("Slovak")),
|
|
("sl", gettext_noop("Slovenian")),
|
|
("sq", gettext_noop("Albanian")),
|
|
("sr", gettext_noop("Serbian")),
|
|
("sr-latn", gettext_noop("Serbian Latin")),
|
|
("sv", gettext_noop("Swedish")),
|
|
("sw", gettext_noop("Swahili")),
|
|
("ta", gettext_noop("Tamil")),
|
|
("te", gettext_noop("Telugu")),
|
|
("tg", gettext_noop("Tajik")),
|
|
("th", gettext_noop("Thai")),
|
|
("tk", gettext_noop("Turkmen")),
|
|
("tr", gettext_noop("Turkish")),
|
|
("tt", gettext_noop("Tatar")),
|
|
("udm", gettext_noop("Udmurt")),
|
|
("uk", gettext_noop("Ukrainian")),
|
|
("ur", gettext_noop("Urdu")),
|
|
("uz", gettext_noop("Uzbek")),
|
|
("vi", gettext_noop("Vietnamese")),
|
|
("zh-hans", gettext_noop("Simplified Chinese")),
|
|
("zh-hant", gettext_noop("Traditional Chinese")),
|
|
]
|
|
|
|
# Languages using BiDi (right-to-left) layout
|
|
LANGUAGES_BIDI = ["he", "ar", "ar-dz", "ckb", "fa", "ur"]
|
|
|
|
# If you set this to False, Django will make some optimizations so as not
|
|
# to load the internationalization machinery.
|
|
USE_I18N = True
|
|
LOCALE_PATHS = []
|
|
|
|
# Settings for language cookie
|
|
LANGUAGE_COOKIE_NAME = "django_language"
|
|
LANGUAGE_COOKIE_AGE = None
|
|
LANGUAGE_COOKIE_DOMAIN = None
|
|
LANGUAGE_COOKIE_PATH = "/"
|
|
LANGUAGE_COOKIE_SECURE = False
|
|
LANGUAGE_COOKIE_HTTPONLY = False
|
|
LANGUAGE_COOKIE_SAMESITE = None
|
|
|
|
|
|
# If you set this to True, Django will format dates, numbers and calendars
|
|
# according to user current locale.
|
|
USE_L10N = True
|
|
|
|
# Not-necessarily-technical managers of the site. They get broken link
|
|
# notifications and other various emails.
|
|
MANAGERS = ADMINS
|
|
|
|
# Default charset to use for all HttpResponse objects, if a MIME type isn't
|
|
# manually specified. It's used to construct the Content-Type header.
|
|
DEFAULT_CHARSET = "utf-8"
|
|
|
|
# Email address that error messages come from.
|
|
SERVER_EMAIL = "root@localhost"
|
|
|
|
# Database connection info. If left empty, will default to the dummy backend.
|
|
DATABASES = {}
|
|
|
|
# Classes used to implement DB routing behavior.
|
|
DATABASE_ROUTERS = []
|
|
|
|
# The email backend to use. For possible shortcuts see django.core.mail.
|
|
# The default is to use the SMTP backend.
|
|
# Third-party backends can be specified by providing a Python path
|
|
# to a module that defines an EmailBackend class.
|
|
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
|
|
|
|
# Host for sending email.
|
|
EMAIL_HOST = "localhost"
|
|
|
|
# Port for sending email.
|
|
EMAIL_PORT = 25
|
|
|
|
# Whether to send SMTP 'Date' header in the local time zone or in UTC.
|
|
EMAIL_USE_LOCALTIME = False
|
|
|
|
# Optional SMTP authentication information for EMAIL_HOST.
|
|
EMAIL_HOST_USER = ""
|
|
EMAIL_HOST_PASSWORD = ""
|
|
EMAIL_USE_TLS = False
|
|
EMAIL_USE_SSL = False
|
|
EMAIL_SSL_CERTFILE = None
|
|
EMAIL_SSL_KEYFILE = None
|
|
EMAIL_TIMEOUT = None
|
|
|
|
# List of strings representing installed apps.
|
|
INSTALLED_APPS = []
|
|
|
|
TEMPLATES = []
|
|
|
|
# Default form rendering class.
|
|
FORM_RENDERER = "django.forms.renderers.DjangoTemplates"
|
|
|
|
# Default email address to use for various automated correspondence from
|
|
# the site managers.
|
|
DEFAULT_FROM_EMAIL = "webmaster@localhost"
|
|
|
|
# Subject-line prefix for email messages send with django.core.mail.mail_admins
|
|
# or ...mail_managers. Make sure to include the trailing space.
|
|
EMAIL_SUBJECT_PREFIX = "[Django] "
|
|
|
|
# Whether to append trailing slashes to URLs.
|
|
APPEND_SLASH = True
|
|
|
|
# Whether to prepend the "www." subdomain to URLs that don't have it.
|
|
PREPEND_WWW = False
|
|
|
|
# Override the server-derived value of SCRIPT_NAME
|
|
FORCE_SCRIPT_NAME = None
|
|
|
|
# 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. Here are a few examples:
|
|
# import re
|
|
# DISALLOWED_USER_AGENTS = [
|
|
# re.compile(r'^NaverBot.*'),
|
|
# re.compile(r'^EmailSiphon.*'),
|
|
# re.compile(r'^SiteSucker.*'),
|
|
# re.compile(r'^sohu-search'),
|
|
# ]
|
|
DISALLOWED_USER_AGENTS = []
|
|
|
|
ABSOLUTE_URL_OVERRIDES = {}
|
|
|
|
# List of compiled regular expression objects representing URLs that need not
|
|
# be reported by BrokenLinkEmailsMiddleware. Here are a few examples:
|
|
# import re
|
|
# IGNORABLE_404_URLS = [
|
|
# re.compile(r'^/apple-touch-icon.*\.png$'),
|
|
# re.compile(r'^/favicon.ico$'),
|
|
# re.compile(r'^/robots.txt$'),
|
|
# re.compile(r'^/phpmyadmin/'),
|
|
# re.compile(r'\.(cgi|php|pl)$'),
|
|
# ]
|
|
IGNORABLE_404_URLS = []
|
|
|
|
# A secret key for this particular Django installation. Used in secret-key
|
|
# hashing algorithms. Set this in your settings, or Django will complain
|
|
# loudly.
|
|
SECRET_KEY = ""
|
|
|
|
# List of secret keys used to verify the validity of signatures. This allows
|
|
# secret key rotation.
|
|
SECRET_KEY_FALLBACKS = []
|
|
|
|
# Default file storage mechanism that holds media.
|
|
DEFAULT_FILE_STORAGE = "django.core.files.storage.FileSystemStorage"
|
|
|
|
# Absolute filesystem path to the directory that will hold user-uploaded files.
|
|
# Example: "/var/www/example.com/media/"
|
|
MEDIA_ROOT = ""
|
|
|
|
# URL that handles the media served from MEDIA_ROOT.
|
|
# Examples: "http://example.com/media/", "http://media.example.com/"
|
|
MEDIA_URL = ""
|
|
|
|
# Absolute path to the directory static files should be collected to.
|
|
# Example: "/var/www/example.com/static/"
|
|
STATIC_ROOT = None
|
|
|
|
# URL that handles the static files served from STATIC_ROOT.
|
|
# Example: "http://example.com/static/", "http://static.example.com/"
|
|
STATIC_URL = None
|
|
|
|
# List of upload handler classes to be applied in order.
|
|
FILE_UPLOAD_HANDLERS = [
|
|
"django.core.files.uploadhandler.MemoryFileUploadHandler",
|
|
"django.core.files.uploadhandler.TemporaryFileUploadHandler",
|
|
]
|
|
|
|
# Maximum size, in bytes, of a request before it will be streamed to the
|
|
# file system instead of into memory.
|
|
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440 # i.e. 2.5 MB
|
|
|
|
# Maximum size in bytes of request data (excluding file uploads) that will be
|
|
# read before a SuspiciousOperation (RequestDataTooBig) is raised.
|
|
DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440 # i.e. 2.5 MB
|
|
|
|
# Maximum number of GET/POST parameters that will be read before a
|
|
# SuspiciousOperation (TooManyFieldsSent) is raised.
|
|
DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
|
|
|
|
# Directory in which upload streamed files will be temporarily saved. A value of
|
|
# `None` will make Django use the operating system's default temporary directory
|
|
# (i.e. "/tmp" on *nix systems).
|
|
FILE_UPLOAD_TEMP_DIR = None
|
|
|
|
# The numeric mode to set newly-uploaded files to. The value should be a mode
|
|
# you'd pass directly to os.chmod; see
|
|
# https://docs.python.org/library/os.html#files-and-directories.
|
|
FILE_UPLOAD_PERMISSIONS = 0o644
|
|
|
|
# The numeric mode to assign to newly-created directories, when uploading files.
|
|
# The value should be a mode as you'd pass to os.chmod;
|
|
# see https://docs.python.org/library/os.html#files-and-directories.
|
|
FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
|
|
|
|
# Python module path where user will place custom format definition.
|
|
# The directory where this setting is pointing should contain subdirectories
|
|
# named as the locales, containing a formats.py file
|
|
# (i.e. "myproject.locale" for myproject/locale/en/formats.py etc. use)
|
|
FORMAT_MODULE_PATH = None
|
|
|
|
# Default formatting for date objects. See all available format strings here:
|
|
# https://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
|
|
DATE_FORMAT = "N j, Y"
|
|
|
|
# Default formatting for datetime objects. See all available format strings here:
|
|
# https://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
|
|
DATETIME_FORMAT = "N j, Y, P"
|
|
|
|
# Default formatting for time objects. See all available format strings here:
|
|
# https://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
|
|
TIME_FORMAT = "P"
|
|
|
|
# Default formatting for date objects when only the year and month are relevant.
|
|
# See all available format strings here:
|
|
# https://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
|
|
YEAR_MONTH_FORMAT = "F Y"
|
|
|
|
# Default formatting for date objects when only the month and day are relevant.
|
|
# See all available format strings here:
|
|
# https://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
|
|
MONTH_DAY_FORMAT = "F j"
|
|
|
|
# Default short formatting for date objects. See all available format strings here:
|
|
# https://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
|
|
SHORT_DATE_FORMAT = "m/d/Y"
|
|
|
|
# Default short formatting for datetime objects.
|
|
# See all available format strings here:
|
|
# https://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
|
|
SHORT_DATETIME_FORMAT = "m/d/Y P"
|
|
|
|
# Default formats to be used when parsing dates from input boxes, in order
|
|
# See all available format string here:
|
|
# https://docs.python.org/library/datetime.html#strftime-behavior
|
|
# * Note that these format strings are different from the ones to display dates
|
|
DATE_INPUT_FORMATS = [
|
|
"%Y-%m-%d", # '2006-10-25'
|
|
"%m/%d/%Y", # '10/25/2006'
|
|
"%m/%d/%y", # '10/25/06'
|
|
"%b %d %Y", # 'Oct 25 2006'
|
|
"%b %d, %Y", # 'Oct 25, 2006'
|
|
"%d %b %Y", # '25 Oct 2006'
|
|
"%d %b, %Y", # '25 Oct, 2006'
|
|
"%B %d %Y", # 'October 25 2006'
|
|
"%B %d, %Y", # 'October 25, 2006'
|
|
"%d %B %Y", # '25 October 2006'
|
|
"%d %B, %Y", # '25 October, 2006'
|
|
]
|
|
|
|
# Default formats to be used when parsing times from input boxes, in order
|
|
# See all available format string here:
|
|
# https://docs.python.org/library/datetime.html#strftime-behavior
|
|
# * Note that these format strings are different from the ones to display dates
|
|
TIME_INPUT_FORMATS = [
|
|
"%H:%M:%S", # '14:30:59'
|
|
"%H:%M:%S.%f", # '14:30:59.000200'
|
|
"%H:%M", # '14:30'
|
|
]
|
|
|
|
# Default formats to be used when parsing dates and times from input boxes,
|
|
# in order
|
|
# See all available format string here:
|
|
# https://docs.python.org/library/datetime.html#strftime-behavior
|
|
# * Note that these format strings are different from the ones to display dates
|
|
DATETIME_INPUT_FORMATS = [
|
|
"%Y-%m-%d %H:%M:%S", # '2006-10-25 14:30:59'
|
|
"%Y-%m-%d %H:%M:%S.%f", # '2006-10-25 14:30:59.000200'
|
|
"%Y-%m-%d %H:%M", # '2006-10-25 14:30'
|
|
"%m/%d/%Y %H:%M:%S", # '10/25/2006 14:30:59'
|
|
"%m/%d/%Y %H:%M:%S.%f", # '10/25/2006 14:30:59.000200'
|
|
"%m/%d/%Y %H:%M", # '10/25/2006 14:30'
|
|
"%m/%d/%y %H:%M:%S", # '10/25/06 14:30:59'
|
|
"%m/%d/%y %H:%M:%S.%f", # '10/25/06 14:30:59.000200'
|
|
"%m/%d/%y %H:%M", # '10/25/06 14:30'
|
|
]
|
|
|
|
# First day of week, to be used on calendars
|
|
# 0 means Sunday, 1 means Monday...
|
|
FIRST_DAY_OF_WEEK = 0
|
|
|
|
# Decimal separator symbol
|
|
DECIMAL_SEPARATOR = "."
|
|
|
|
# Boolean that sets whether to add thousand separator when formatting numbers
|
|
USE_THOUSAND_SEPARATOR = False
|
|
|
|
# Number of digits that will be together, when splitting them by
|
|
# THOUSAND_SEPARATOR. 0 means no grouping, 3 means splitting by thousands...
|
|
NUMBER_GROUPING = 0
|
|
|
|
# Thousand separator symbol
|
|
THOUSAND_SEPARATOR = ","
|
|
|
|
# The tablespaces to use for each model when not specified otherwise.
|
|
DEFAULT_TABLESPACE = ""
|
|
DEFAULT_INDEX_TABLESPACE = ""
|
|
|
|
# Default primary key field type.
|
|
DEFAULT_AUTO_FIELD = "django.db.models.AutoField"
|
|
|
|
# Default X-Frame-Options header value
|
|
X_FRAME_OPTIONS = "DENY"
|
|
|
|
USE_X_FORWARDED_HOST = False
|
|
USE_X_FORWARDED_PORT = False
|
|
|
|
# The Python dotted path to the WSGI application that Django's internal server
|
|
# (runserver) will use. If `None`, the return value of
|
|
# 'django.core.wsgi.get_wsgi_application' is used, thus preserving the same
|
|
# behavior as previous versions of Django. Otherwise this should point to an
|
|
# actual WSGI application object.
|
|
WSGI_APPLICATION = None
|
|
|
|
# If your Django app is behind a proxy that sets a header to specify secure
|
|
# connections, AND that proxy ensures that user-submitted headers with the
|
|
# same name are ignored (so that people can't spoof it), set this value to
|
|
# a tuple of (header_name, header_value). For any requests that come in with
|
|
# that header/value, request.is_secure() will return True.
|
|
# WARNING! Only set this if you fully understand what you're doing. Otherwise,
|
|
# you may be opening yourself up to a security risk.
|
|
SECURE_PROXY_SSL_HEADER = None
|
|
|
|
##############
|
|
# MIDDLEWARE #
|
|
##############
|
|
|
|
# List of middleware to use. Order is important; in the request phase, these
|
|
# middleware will be applied in the order given, and in the response
|
|
# phase the middleware will be applied in reverse order.
|
|
MIDDLEWARE = []
|
|
|
|
############
|
|
# SESSIONS #
|
|
############
|
|
|
|
# Cache to store session data if using the cache session backend.
|
|
SESSION_CACHE_ALIAS = "default"
|
|
# Cookie name. This can be whatever you want.
|
|
SESSION_COOKIE_NAME = "sessionid"
|
|
# Age of cookie, in seconds (default: 2 weeks).
|
|
SESSION_COOKIE_AGE = 60 * 60 * 24 * 7 * 2
|
|
# A string like "example.com", or None for standard domain cookie.
|
|
SESSION_COOKIE_DOMAIN = None
|
|
# Whether the session cookie should be secure (https:// only).
|
|
SESSION_COOKIE_SECURE = False
|
|
# The path of the session cookie.
|
|
SESSION_COOKIE_PATH = "/"
|
|
# Whether to use the HttpOnly flag.
|
|
SESSION_COOKIE_HTTPONLY = True
|
|
# Whether to set the flag restricting cookie leaks on cross-site requests.
|
|
# This can be 'Lax', 'Strict', 'None', or False to disable the flag.
|
|
SESSION_COOKIE_SAMESITE = "Lax"
|
|
# Whether to save the session data on every request.
|
|
SESSION_SAVE_EVERY_REQUEST = False
|
|
# Whether a user's session cookie expires when the web browser is closed.
|
|
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
|
|
# The module to store session data
|
|
SESSION_ENGINE = "django.contrib.sessions.backends.db"
|
|
# Directory to store session files if using the file session module. If None,
|
|
# the backend will use a sensible default.
|
|
SESSION_FILE_PATH = None
|
|
# class to serialize session data
|
|
SESSION_SERIALIZER = "django.contrib.sessions.serializers.JSONSerializer"
|
|
|
|
#########
|
|
# CACHE #
|
|
#########
|
|
|
|
# The cache backends to use.
|
|
CACHES = {
|
|
"default": {
|
|
"BACKEND": "django.core.cache.backends.locmem.LocMemCache",
|
|
}
|
|
}
|
|
CACHE_MIDDLEWARE_KEY_PREFIX = ""
|
|
CACHE_MIDDLEWARE_SECONDS = 600
|
|
CACHE_MIDDLEWARE_ALIAS = "default"
|
|
|
|
##################
|
|
# AUTHENTICATION #
|
|
##################
|
|
|
|
AUTH_USER_MODEL = "auth.User"
|
|
|
|
AUTHENTICATION_BACKENDS = ["django.contrib.auth.backends.ModelBackend"]
|
|
|
|
LOGIN_URL = "/accounts/login/"
|
|
|
|
LOGIN_REDIRECT_URL = "/accounts/profile/"
|
|
|
|
LOGOUT_REDIRECT_URL = None
|
|
|
|
# The number of seconds a password reset link is valid for (default: 3 days).
|
|
PASSWORD_RESET_TIMEOUT = 60 * 60 * 24 * 3
|
|
|
|
# the first hasher in this list is the preferred algorithm. any
|
|
# password using different algorithms will be converted automatically
|
|
# upon login
|
|
PASSWORD_HASHERS = [
|
|
"django.contrib.auth.hashers.PBKDF2PasswordHasher",
|
|
"django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher",
|
|
"django.contrib.auth.hashers.Argon2PasswordHasher",
|
|
"django.contrib.auth.hashers.BCryptSHA256PasswordHasher",
|
|
"django.contrib.auth.hashers.ScryptPasswordHasher",
|
|
]
|
|
|
|
AUTH_PASSWORD_VALIDATORS = []
|
|
|
|
###########
|
|
# SIGNING #
|
|
###########
|
|
|
|
SIGNING_BACKEND = "django.core.signing.TimestampSigner"
|
|
|
|
########
|
|
# CSRF #
|
|
########
|
|
|
|
# Dotted path to callable to be used as view when a request is
|
|
# rejected by the CSRF middleware.
|
|
CSRF_FAILURE_VIEW = "django.views.csrf.csrf_failure"
|
|
|
|
# Settings for CSRF cookie.
|
|
CSRF_COOKIE_NAME = "csrftoken"
|
|
CSRF_COOKIE_AGE = 60 * 60 * 24 * 7 * 52
|
|
CSRF_COOKIE_DOMAIN = None
|
|
CSRF_COOKIE_PATH = "/"
|
|
CSRF_COOKIE_SECURE = False
|
|
CSRF_COOKIE_HTTPONLY = False
|
|
CSRF_COOKIE_SAMESITE = "Lax"
|
|
CSRF_HEADER_NAME = "HTTP_X_CSRFTOKEN"
|
|
CSRF_TRUSTED_ORIGINS = []
|
|
CSRF_USE_SESSIONS = False
|
|
|
|
# Whether to mask CSRF cookie value. It's a transitional setting helpful in
|
|
# migrating multiple instance of the same project to Django 4.1+.
|
|
CSRF_COOKIE_MASKED = False
|
|
|
|
############
|
|
# MESSAGES #
|
|
############
|
|
|
|
# Class to use as messages backend
|
|
MESSAGE_STORAGE = "django.contrib.messages.storage.fallback.FallbackStorage"
|
|
|
|
# Default values of MESSAGE_LEVEL and MESSAGE_TAGS are defined within
|
|
# django.contrib.messages to avoid imports in this settings file.
|
|
|
|
###########
|
|
# LOGGING #
|
|
###########
|
|
|
|
# The callable to use to configure logging
|
|
LOGGING_CONFIG = "logging.config.dictConfig"
|
|
|
|
# Custom logging configuration.
|
|
LOGGING = {}
|
|
|
|
# Default exception reporter class used in case none has been
|
|
# specifically assigned to the HttpRequest instance.
|
|
DEFAULT_EXCEPTION_REPORTER = "django.views.debug.ExceptionReporter"
|
|
|
|
# Default exception reporter filter class used in case none has been
|
|
# specifically assigned to the HttpRequest instance.
|
|
DEFAULT_EXCEPTION_REPORTER_FILTER = "django.views.debug.SafeExceptionReporterFilter"
|
|
|
|
###########
|
|
# TESTING #
|
|
###########
|
|
|
|
# The name of the class to use to run the test suite
|
|
TEST_RUNNER = "django.test.runner.DiscoverRunner"
|
|
|
|
# Apps that don't need to be serialized at test database creation time
|
|
# (only apps with migrations are to start with)
|
|
TEST_NON_SERIALIZED_APPS = []
|
|
|
|
############
|
|
# FIXTURES #
|
|
############
|
|
|
|
# The list of directories to search for fixtures
|
|
FIXTURE_DIRS = []
|
|
|
|
###############
|
|
# STATICFILES #
|
|
###############
|
|
|
|
# A list of locations of additional static files
|
|
STATICFILES_DIRS = []
|
|
|
|
# The default file storage backend used during the build process
|
|
STATICFILES_STORAGE = "django.contrib.staticfiles.storage.StaticFilesStorage"
|
|
|
|
# List of finder classes that know how to find static files in
|
|
# various locations.
|
|
STATICFILES_FINDERS = [
|
|
"django.contrib.staticfiles.finders.FileSystemFinder",
|
|
"django.contrib.staticfiles.finders.AppDirectoriesFinder",
|
|
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
|
|
]
|
|
|
|
##############
|
|
# MIGRATIONS #
|
|
##############
|
|
|
|
# Migration module overrides for apps, by app label.
|
|
MIGRATION_MODULES = {}
|
|
|
|
#################
|
|
# SYSTEM CHECKS #
|
|
#################
|
|
|
|
# List of all issues generated by system checks that should be silenced. Light
|
|
# issues like warnings, infos or debugs will not generate a message. Silencing
|
|
# serious issues like errors and criticals does not result in hiding the
|
|
# message, but Django will not stop you from e.g. running server.
|
|
SILENCED_SYSTEM_CHECKS = []
|
|
|
|
#######################
|
|
# SECURITY MIDDLEWARE #
|
|
#######################
|
|
SECURE_CONTENT_TYPE_NOSNIFF = True
|
|
SECURE_CROSS_ORIGIN_OPENER_POLICY = "same-origin"
|
|
SECURE_HSTS_INCLUDE_SUBDOMAINS = False
|
|
SECURE_HSTS_PRELOAD = False
|
|
SECURE_HSTS_SECONDS = 0
|
|
SECURE_REDIRECT_EXEMPT = []
|
|
SECURE_REFERRER_POLICY = "same-origin"
|
|
SECURE_SSL_HOST = None
|
|
SECURE_SSL_REDIRECT = False
|