The joined path (/workshops) is located outside of the base path component (/app/app/static)
Request Method: | GET |
---|---|
Request URL: | https://www.indigoyoga.net//workshops |
Django Version: | 4.1.13 |
Exception Type: | SuspiciousFileOperation |
Exception Value: | The joined path (/workshops) is located outside of the base path component (/app/app/static) |
Exception Location: | /app/.heroku/python/lib/python3.9/site-packages/django/utils/_os.py, line 31, in safe_join |
Python Executable: | /app/.heroku/python/bin/python |
Python Version: | 3.9.15 |
Python Path: | ['/app/.heroku/python/bin', '/app', '/app/.heroku/python/lib/python39.zip', '/app/.heroku/python/lib/python3.9', '/app/.heroku/python/lib/python3.9/lib-dynload', '/app/.heroku/python/lib/python3.9/site-packages'] |
Server time: | Thu, 28 Mar 2024 17:34:19 +0000 |
/app/.heroku/python/lib/python3.9/site-packages/django/core/handlers/exception.py
, line 56, in inner
return inner
else:
@wraps(get_response)
def inner(request):
try:
response = get_response(request)…
except Exception as exc:
response = response_for_exception(request, exc)
return response
return inner
Variable | Value |
---|---|
exc | SuspiciousFileOperation('The joined path (/workshops) is located outside of the base path component (/app/app/static)') |
get_response | <whitenoise.middleware.WhiteNoiseMiddleware object at 0x7fc84e32f190> |
request | <WSGIRequest: GET '//workshops'> |
/app/.heroku/python/lib/python3.9/site-packages/whitenoise/middleware.py
, line 57, in __call__
self.add_files(self.static_root, prefix=self.static_prefix)
if self.root:
self.add_files(self.root)
if self.use_finders and not self.autorefresh:
self.add_files_from_finders()
def __call__(self, request):
response = self.process_request(request)…
if response is None:
response = self.get_response(request)
return response
def process_request(self, request):
if self.autorefresh:
Variable | Value |
---|---|
request | <WSGIRequest: GET '//workshops'> |
self | <whitenoise.middleware.WhiteNoiseMiddleware object at 0x7fc84e32f190> |
/app/.heroku/python/lib/python3.9/site-packages/whitenoise/middleware.py
, line 64, in process_request
response = self.process_request(request)
if response is None:
response = self.get_response(request)
return response
def process_request(self, request):
if self.autorefresh:
static_file = self.find_file(request.path_info)…
else:
static_file = self.files.get(request.path_info)
if static_file is not None:
return self.serve(static_file, request)
@staticmethod
Variable | Value |
---|---|
request | <WSGIRequest: GET '//workshops'> |
self | <whitenoise.middleware.WhiteNoiseMiddleware object at 0x7fc84e32f190> |
/app/.heroku/python/lib/python3.9/site-packages/whitenoise/base.py
, line 145, in find_file
def find_file(self, url):
# Optimization: bail early if the URL can never match a file
if not self.index_file and url.endswith("/"):
return
if not self.url_is_canonical(url):
return
for path in self.candidate_paths_for_url(url):…
try:
return self.find_file_at_path(path, url)
except MissingFileError:
pass
def candidate_paths_for_url(self, url):
Variable | Value |
---|---|
self | <whitenoise.middleware.WhiteNoiseMiddleware object at 0x7fc84e32f190> |
url | '//workshops' |
/app/.heroku/python/lib/python3.9/site-packages/whitenoise/middleware.py
, line 126, in candidate_paths_for_url
files.setdefault(url, storage.path(path))
stat_cache = {path: os.stat(path) for path in files.values()}
for url, path in files.items():
self.add_file_to_dictionary(url, path, stat_cache=stat_cache)
def candidate_paths_for_url(self, url):
if self.use_finders and url.startswith(self.static_prefix):
path = finders.find(url[len(self.static_prefix) :])…
if path:
yield path
paths = super(WhiteNoiseMiddleware, self).candidate_paths_for_url(url)
for path in paths:
yield path
Variable | Value |
---|---|
__class__ | <class 'whitenoise.middleware.WhiteNoiseMiddleware'> |
self | <whitenoise.middleware.WhiteNoiseMiddleware object at 0x7fc84e32f190> |
url | '//workshops' |
/app/.heroku/python/lib/python3.9/site-packages/django/contrib/staticfiles/finders.py
, line 298, in find
If ``all`` is ``False`` (default), return the first matching
absolute path (or ``None`` if no match). Otherwise return a list.
"""
searched_locations[:] = []
matches = []
for finder in get_finders():
result = finder.find(path, all=all)…
if not all and result:
return result
if not isinstance(result, (list, tuple)):
result = [result]
matches.extend(result)
if matches:
Variable | Value |
---|---|
all | False |
finder | <django.contrib.staticfiles.finders.FileSystemFinder object at 0x7fc84c5fa550> |
matches | [] |
path | '/workshops' |
/app/.heroku/python/lib/python3.9/site-packages/django/contrib/staticfiles/finders.py
, line 124, in find
"""
Look for files in the extra locations as defined in STATICFILES_DIRS.
"""
matches = []
for prefix, root in self.locations:
if root not in searched_locations:
searched_locations.append(root)
matched_path = self.find_location(root, path, prefix)…
if matched_path:
if not all:
return matched_path
matches.append(matched_path)
return matches
Variable | Value |
---|---|
all | False |
matches | [] |
path | '/workshops' |
prefix | '' |
root | '/app/app/static' |
self | <django.contrib.staticfiles.finders.FileSystemFinder object at 0x7fc84c5fa550> |
/app/.heroku/python/lib/python3.9/site-packages/django/contrib/staticfiles/finders.py
, line 141, in find_location
absolute path (or ``None`` if no match).
"""
if prefix:
prefix = "%s%s" % (prefix, os.sep)
if not path.startswith(prefix):
return None
path = path[len(prefix) :]
path = safe_join(root, path)…
if os.path.exists(path):
return path
def list(self, ignore_patterns):
"""
List all files in all locations.
Variable | Value |
---|---|
path | '/workshops' |
prefix | '' |
root | '/app/app/static' |
self | <django.contrib.staticfiles.finders.FileSystemFinder object at 0x7fc84c5fa550> |
/app/.heroku/python/lib/python3.9/site-packages/django/utils/_os.py
, line 31, in safe_join
# b) The final path must be the same as the base path.
# c) The base path must be the most root path (meaning either "/" or "C:\\")
if (
not normcase(final_path).startswith(normcase(base_path + sep))
and normcase(final_path) != normcase(base_path)
and dirname(normcase(base_path)) != normcase(base_path)
):
raise SuspiciousFileOperation(…
"The joined path ({}) is located outside of the base path "
"component ({})".format(final_path, base_path)
)
return final_path
Variable | Value |
---|---|
base | '/app/app/static' |
base_path | '/app/app/static' |
final_path | '/workshops' |
paths | ('/workshops',) |
[unable to retrieve the current user]
No GET data
No POST data
No FILES data
No cookie data
Variable | Value |
---|---|
HTTP_ACCEPT | '*/*' |
HTTP_ACCEPT_ENCODING | 'gzip, br' |
HTTP_CDN_LOOP | 'cloudflare' |
HTTP_CF_CONNECTING_IP | '34.228.168.200' |
HTTP_CF_IPCOUNTRY | 'US' |
HTTP_CF_RAY | '86b95ece6dd63979-IAD' |
HTTP_CF_VISITOR | '{"scheme":"https"}' |
HTTP_CONNECTION | 'close' |
HTTP_CONNECT_TIME | '0' |
HTTP_HOST | 'www.indigoyoga.net' |
HTTP_REFERER | 'http://www.indigoyoga.net//workshops' |
HTTP_TOTAL_ROUTE_TIME | '0' |
HTTP_USER_AGENT | 'claudebot' |
HTTP_VIA | '1.1 vegur' |
HTTP_X_FORWARDED_FOR | '34.228.168.200, 172.70.38.32' |
HTTP_X_FORWARDED_PORT | '443' |
HTTP_X_FORWARDED_PROTO | 'https' |
HTTP_X_REQUEST_ID | '0a389af5-465e-43e1-8ab4-408017f3657f' |
HTTP_X_REQUEST_START | '1711647259939' |
PATH_INFO | '//workshops' |
QUERY_STRING | '' |
RAW_URI | '//workshops' |
REMOTE_ADDR | '10.1.94.46' |
REMOTE_PORT | '14627' |
REQUEST_METHOD | 'GET' |
SCRIPT_NAME | '' |
SERVER_NAME | '0.0.0.0' |
SERVER_PORT | '52738' |
SERVER_PROTOCOL | 'HTTP/1.1' |
SERVER_SOFTWARE | 'gunicorn/20.0.4' |
gunicorn.socket | <socket.socket fd=10, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.18.230.226', 52738), raddr=('10.1.94.46', 14627)> |
wsgi.errors | <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7fc84c50c4f0> |
wsgi.file_wrapper | <class 'gunicorn.http.wsgi.FileWrapper'> |
wsgi.input | <gunicorn.http.body.Body object at 0x7fc84c50c070> |
wsgi.input_terminated | True |
wsgi.multiprocess | True |
wsgi.multithread | False |
wsgi.run_once | False |
wsgi.url_scheme | 'https' |
wsgi.version | (1, 0) |
app.settings.production
Setting | Value |
---|---|
ABSOLUTE_URL_OVERRIDES | {} |
ADMINS | [] |
ALLOWED_HOSTS | ['indigo-site-488cd7c6b7a9.herokuapp.com', 'indigoyoga.net', 'www.indigoyoga.net'] |
APPEND_SLASH | True |
AUTHENTICATION_BACKENDS | ['django.contrib.auth.backends.ModelBackend'] |
AUTH_PASSWORD_VALIDATORS | '********************' |
AUTH_USER_MODEL | 'auth.User' |
AWS_ACCESS_KEY_ID | '********************' |
AWS_AUTO_CREATE_BUCKET | False |
AWS_CLOUDFRONT_DISTRIBUTION_ID | 'E3KSTYVNFK782O' |
AWS_CLOUDFRONT_SUBDOMAIN | 'd39zwath2zo53k' |
AWS_EXPIRY | 604800 |
AWS_IS_GZIPPED | True |
AWS_LOCATION | 'public' |
AWS_QUERYSTRING_AUTH | False |
AWS_S3_CUSTOM_DOMAIN | 'd39zwath2zo53k.cloudfront.net' |
AWS_S3_OBJECT_PARAMETERS | {'CacheControl': 'max-age=604800, s-maxage=604800, must-revalidate'} |
AWS_S3_REGION_NAME | None |
AWS_SECRET_ACCESS_KEY | '********************' |
AWS_STORAGE_BUCKET_NAME | 'indigo-site-s3' |
BASE_DIR | '/app' |
BASE_URL | 'indigo-site-488cd7c6b7a9.herokuapp.com' |
CACHES | {'default': {'BACKEND': 'django.core.cache.backends.redis.RedisCache', 'LOCATION': 'redis://:p2ca0e2d305800537dc30f0da1a345df4e40a6dd50e4ad58d6af5953e04f97c58@ec2-3-220-200-167.compute-1.amazonaws.com:20979'}} |
CACHE_MIDDLEWARE_ALIAS | 'default' |
CACHE_MIDDLEWARE_KEY_PREFIX | '********************' |
CACHE_MIDDLEWARE_SECONDS | 600 |
CLOUDFLARE_API_TOKEN | '********************' |
CLOUDFLARE_ZONE_ID | '8c95d3962c292cc8d720dccdeb20345d' |
COMPRESSORS | {'css': 'compressor.css.CssCompressor', 'js': 'compressor.js.JsCompressor'} |
COMPRESS_CACHEABLE_PRECOMPILERS | () |
COMPRESS_CACHE_BACKEND | 'default' |
COMPRESS_CACHE_KEY_FUNCTION | '********************' |
COMPRESS_CLEAN_CSS_ARGUMENTS | '' |
COMPRESS_CLEAN_CSS_BINARY | 'cleancss' |
COMPRESS_CLOSURE_COMPILER_ARGUMENTS | '' |
COMPRESS_CLOSURE_COMPILER_BINARY | 'java -jar compiler.jar' |
COMPRESS_CSS_HASHING_METHOD | 'mtime' |
COMPRESS_DATA_URI_MAX_SIZE | 1024 |
COMPRESS_DEBUG_TOGGLE | None |
COMPRESS_ENABLED | False |
COMPRESS_FILTERS | {'css': ['compressor.filters.css_default.CssAbsoluteFilter', 'compressor.filters.cssmin.rCSSMinFilter'], 'js': ['compressor.filters.jsmin.rJSMinFilter']} |
COMPRESS_JINJA2_GET_ENVIRONMENT | <function CompressorConf.JINJA2_GET_ENVIRONMENT at 0x7fc84e6a2ca0> |
COMPRESS_MINT_DELAY | 30 |
COMPRESS_MTIME_DELAY | 10 |
COMPRESS_OFFLINE | False |
COMPRESS_OFFLINE_CONTEXT | {'STATIC_URL': 'https://d39zwath2zo53k.cloudfront.net/'} |
COMPRESS_OFFLINE_MANIFEST | 'manifest.json' |
COMPRESS_OFFLINE_MANIFEST_STORAGE | 'compressor.storage.OfflineManifestFileStorage' |
COMPRESS_OFFLINE_TIMEOUT | 31536000 |
COMPRESS_OUTPUT_DIR | 'CACHE' |
COMPRESS_PARSER | 'compressor.parser.AutoSelectParser' |
COMPRESS_PRECOMPILERS | () |
COMPRESS_REBUILD_TIMEOUT | 2592000 |
COMPRESS_ROOT | '/app/staticfiles' |
COMPRESS_STORAGE | 'app.storage.CachedS3Boto3Storage' |
COMPRESS_TEMPLATE_FILTER_CONTEXT | {'STATIC_URL': 'https://d39zwath2zo53k.cloudfront.net/'} |
COMPRESS_URL | 'https://d39zwath2zo53k.cloudfront.net/' |
COMPRESS_URL_PLACEHOLDER | '/__compressor_url_placeholder__/' |
COMPRESS_VERBOSE | False |
COMPRESS_YUGLIFY_BINARY | 'yuglify' |
COMPRESS_YUGLIFY_CSS_ARGUMENTS | '--terminal' |
COMPRESS_YUGLIFY_JS_ARGUMENTS | '--terminal' |
COMPRESS_YUI_BINARY | 'java -jar yuicompressor.jar' |
COMPRESS_YUI_CSS_ARGUMENTS | '' |
COMPRESS_YUI_JS_ARGUMENTS | '' |
CSRF_COOKIE_AGE | 31449600 |
CSRF_COOKIE_DOMAIN | None |
CSRF_COOKIE_HTTPONLY | False |
CSRF_COOKIE_MASKED | False |
CSRF_COOKIE_NAME | 'csrftoken' |
CSRF_COOKIE_PATH | '/' |
CSRF_COOKIE_SAMESITE | 'Lax' |
CSRF_COOKIE_SECURE | False |
CSRF_FAILURE_VIEW | 'django.views.csrf.csrf_failure' |
CSRF_HEADER_NAME | 'HTTP_X_CSRFTOKEN' |
CSRF_TRUSTED_ORIGINS | ['https://indigo-site-488cd7c6b7a9.herokuapp.com', 'https://indigoyoga.net', 'https://www.indigoyoga.net'] |
CSRF_USE_SESSIONS | False |
DATABASES | {'default': {'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_HEALTH_CHECKS': False, 'CONN_MAX_AGE': 600, 'ENGINE': 'django.db.backends.postgresql', 'HOST': 'ec2-44-214-132-149.compute-1.amazonaws.com', 'NAME': 'ddr6d86ko0mj05', 'OPTIONS': {'sslmode': 'require'}, 'PASSWORD': '********************', 'PORT': 5432, 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': 'zdhkrmbxmpubcf'}} |
DATABASE_ROUTERS | [] |
DATA_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
DATA_UPLOAD_MAX_NUMBER_FIELDS | 1000 |
DATA_UPLOAD_MAX_NUMBER_FILES | 100 |
DATETIME_FORMAT | 'N j, Y, P' |
DATETIME_INPUT_FORMATS | ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M'] |
DATE_FORMAT | 'N j, Y' |
DATE_INPUT_FORMATS | ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y'] |
DEBUG | True |
DEBUG_PROPAGATE_EXCEPTIONS | False |
DECIMAL_SEPARATOR | '.' |
DEFAULT_AUTO_FIELD | 'django.db.models.AutoField' |
DEFAULT_CHARSET | 'utf-8' |
DEFAULT_EXCEPTION_REPORTER | 'django.views.debug.ExceptionReporter' |
DEFAULT_EXCEPTION_REPORTER_FILTER | 'django.views.debug.SafeExceptionReporterFilter' |
DEFAULT_FILE_STORAGE | 'storages.backends.s3boto3.S3Boto3Storage' |
DEFAULT_FROM_EMAIL | 'webmaster@localhost' |
DEFAULT_INDEX_TABLESPACE | '' |
DEFAULT_TABLESPACE | '' |
DISALLOWED_USER_AGENTS | [] |
DJANGO_ROOT | '/home/app/' |
EMAIL_BACKEND | 'django.core.mail.backends.smtp.EmailBackend' |
EMAIL_HOST | None |
EMAIL_HOST_PASSWORD | '********************' |
EMAIL_HOST_USER | None |
EMAIL_PORT | None |
EMAIL_SSL_CERTFILE | None |
EMAIL_SSL_KEYFILE | '********************' |
EMAIL_SUBJECT_PREFIX | '[Django] ' |
EMAIL_TIMEOUT | None |
EMAIL_USE_LOCALTIME | False |
EMAIL_USE_SSL | False |
EMAIL_USE_TLS | True |
FILE_UPLOAD_DIRECTORY_PERMISSIONS | None |
FILE_UPLOAD_HANDLERS | ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler'] |
FILE_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
FILE_UPLOAD_PERMISSIONS | 420 |
FILE_UPLOAD_TEMP_DIR | None |
FIRST_DAY_OF_WEEK | 0 |
FIXTURE_DIRS | [] |
FORCE_SCRIPT_NAME | None |
FORMAT_MODULE_PATH | None |
FORM_RENDERER | 'django.forms.renderers.DjangoTemplates' |
IGNORABLE_404_URLS | [] |
INSTALLED_APPS | ['page', 'mediamodels', 'wagtail_honeypot', 'storages', 'compressor', 'wagtail_lazyimages', 'wagtailfontawesomesvg', 'robots', 'wagtailmodelchooser', 'wagtailgeowidget', 'wagtail.contrib.forms', 'wagtail.contrib.settings', 'wagtail.contrib.redirects', 'wagtail.contrib.frontend_cache', 'wagtail.contrib.modeladmin', 'wagtail.contrib.table_block', 'wagtail.embeds', 'wagtail.sites', 'wagtail.users', 'wagtail.snippets', 'wagtail.documents', 'wagtail.images', 'wagtail.search', 'wagtail.admin', 'wagtail.core', 'modelcluster', 'taggit', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.sitemaps', 'debug_toolbar', 'widget_tweaks', 'wagtailvideos', 'wagtailcache'] |
INTERNAL_IPS | ('172.20.0.1',) |
LANGUAGES | [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ar-dz', 'Algerian Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('ig', 'Igbo'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('ky', 'Kyrgyz'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('ms', 'Malay'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('tg', 'Tajik'), ('th', 'Thai'), ('tk', 'Turkmen'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('uz', 'Uzbek'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')] |
LANGUAGES_BIDI | ['he', 'ar', 'ar-dz', 'fa', 'ur'] |
LANGUAGE_CODE | 'en-us' |
LANGUAGE_COOKIE_AGE | None |
LANGUAGE_COOKIE_DOMAIN | None |
LANGUAGE_COOKIE_HTTPONLY | False |
LANGUAGE_COOKIE_NAME | 'django_language' |
LANGUAGE_COOKIE_PATH | '/' |
LANGUAGE_COOKIE_SAMESITE | None |
LANGUAGE_COOKIE_SECURE | False |
LOCALE_PATHS | [] |
LOGGING | {'disable_existing_loggers': False, 'formatters': {'simple': {'format': '%(levelname)s %(message)s'}, 'verbose': {'datefmt': '%Y-%m-%d %H:%M:%S', 'format': '%(asctime)s [%(process)d] ' '[%(levelname)s] pathname=%(pathname)s ' 'lineno=%(lineno)s funcname=%(funcName)s ' '%(message)s'}}, 'handlers': {'console': {'class': 'logging.StreamHandler', 'formatter': 'verbose', 'level': 'DEBUG'}, 'null': {'class': 'logging.NullHandler', 'level': 'DEBUG'}}, 'loggers': {'testlogger': {'handlers': ['console'], 'level': 'INFO'}}, 'version': 1} |
LOGGING_CONFIG | 'logging.config.dictConfig' |
LOGIN_REDIRECT_URL | '/accounts/profile/' |
LOGIN_URL | '/accounts/login/' |
LOGOUT_REDIRECT_URL | None |
MANAGERS | [] |
MEDIA_ROOT | '/app/media' |
MEDIA_URL | '/media/' |
MESSAGE_STORAGE | 'django.contrib.messages.storage.fallback.FallbackStorage' |
MIDDLEWARE | ('wagtailcache.cache.UpdateCacheMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', 'django.middleware.gzip.GZipMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'wagtail.contrib.redirects.middleware.RedirectMiddleware', 'debug_toolbar.middleware.DebugToolbarMiddleware', 'wagtailcache.cache.FetchFromCacheMiddleware') |
MIGRATION_MODULES | {} |
MONTH_DAY_FORMAT | 'F j' |
NUMBER_GROUPING | 0 |
PASSWORD_HASHERS | '********************' |
PASSWORD_RESET_TIMEOUT | '********************' |
PREPEND_WWW | False |
PROJECT_DIR | '/app/app' |
REDIS_URL | 'redis://:p2ca0e2d305800537dc30f0da1a345df4e40a6dd50e4ad58d6af5953e04f97c58@ec2-3-220-200-167.compute-1.amazonaws.com:20979' |
ROOT_URLCONF | 'app.urls' |
SECRET_KEY | '********************' |
SECRET_KEY_FALLBACKS | '********************' |
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_PROXY_SSL_HEADER | ('HTTP_X_FORWARDED_PROTO', 'https') |
SECURE_REDIRECT_EXEMPT | [] |
SECURE_REFERRER_POLICY | 'same-origin' |
SECURE_SSL_HOST | None |
SECURE_SSL_REDIRECT | True |
SERVER_EMAIL | 'root@localhost' |
SESSION_CACHE_ALIAS | 'default' |
SESSION_COOKIE_AGE | 1209600 |
SESSION_COOKIE_DOMAIN | None |
SESSION_COOKIE_HTTPONLY | True |
SESSION_COOKIE_NAME | 'sessionid' |
SESSION_COOKIE_PATH | '/' |
SESSION_COOKIE_SAMESITE | 'Lax' |
SESSION_COOKIE_SECURE | False |
SESSION_ENGINE | 'django.contrib.sessions.backends.db' |
SESSION_EXPIRE_AT_BROWSER_CLOSE | False |
SESSION_FILE_PATH | None |
SESSION_SAVE_EVERY_REQUEST | False |
SESSION_SERIALIZER | 'django.contrib.sessions.serializers.JSONSerializer' |
SETTINGS_MODULE | 'app.settings.production' |
SHORT_DATETIME_FORMAT | 'm/d/Y P' |
SHORT_DATE_FORMAT | 'm/d/Y' |
SIGNING_BACKEND | 'django.core.signing.TimestampSigner' |
SILENCED_SYSTEM_CHECKS | [] |
SITE_ID | 1 |
STATICFILES_DIRS | ['/app/app/static'] |
STATICFILES_FINDERS | ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder'] |
STATICFILES_STORAGE | 'app.storage.CachedS3Boto3Storage' |
STATIC_ROOT | '/app/staticfiles' |
STATIC_URL | 'https://d39zwath2zo53k.cloudfront.net/' |
TEMPLATES | [{'APP_DIRS': True, 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['/app/app/templates'], 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'wagtail.contrib.settings.context_processors.settings']}}] |
TEST_NON_SERIALIZED_APPS | [] |
TEST_RUNNER | 'django.test.runner.DiscoverRunner' |
THOUSAND_SEPARATOR | ',' |
TIME_FORMAT | 'P' |
TIME_INPUT_FORMATS | ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M'] |
TIME_ZONE | 'UTC' |
USE_DEPRECATED_PYTZ | False |
USE_I18N | True |
USE_L10N | True |
USE_THOUSAND_SEPARATOR | False |
USE_TZ | True |
USE_X_FORWARDED_HOST | False |
USE_X_FORWARDED_PORT | False |
WAGTAILADMIN_BASE_URL | 'indigo-site-488cd7c6b7a9.herokuapp.com' |
WAGTAILFRONTENDCACHE | {'cloudflare': {'BACKEND': 'wagtail.contrib.frontend_cache.backends.CloudflareBackend', 'BEARER_TOKEN': '********************', 'ZONEID': '8c95d3962c292cc8d720dccdeb20345d'}} |
WAGTAILIMAGES_IMAGE_MODEL | 'mediamodels.CustomImage' |
WAGTAIL_ENABLE_UPDATE_CHECK | False |
WAGTAIL_SITE_NAME | 'Indigo' |
WSGI_APPLICATION | 'app.wsgi.application' |
X_FRAME_OPTIONS | 'DENY' |
YEAR_MONTH_FORMAT | 'F Y' |
You’re seeing this error because you have DEBUG = True
in your
Django settings file. Change that to False
, and Django will
display a standard page generated by the handler for this status code.