Error during template rendering
In template /home/runner/work/django_admin_tests/django_admin_tests/demo/templates/demo/broken_template.html
, error at line 7
Invalid block tag on line 7: 'unknown_tag_name_foo', expected 'endblock'. Did you forget to register or load this tag?
1 | {% extends "demo/base.html" %} |
---|---|
2 | {% block title %}Broken template{% endblock %} |
3 | {% block h1 %}Broken template{% endblock %} |
4 | |
5 | {% block content %} |
6 | <p>This is a test.</p> |
7 | <p>{% unknown_tag_name_foo %}</p> |
8 | {% endblock %} |
9 |
Traceback Switch to copy-and-paste view
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/template/base.py
, line 510, in parse# Add the token to the command stack. This is used for error
# messages if further parsing fails due to an unclosed block
# tag.
self.command_stack.append((command, token))
# Get the tag callback function from the ones registered with
# the parser.
try:
compile_func = self.tags[command] ^^^^^^^^^^^^^^^^^^
…
except KeyError:
self.invalid_block_tag(token, command, parse_until)
# Compile the callback into a node object and add it to
# the node list.
try:
compiled_result = compile_func(self, token)
Local vars
Variable Value command 'unknown_tag_name_foo'
nodelist [<TextNode: '\n <p>This is a test.</p>'>]
parse_until ('endblock',)
self <Parser tokens=[<Text token: "...">, <Block token: "endblock...">, <Text token: "</p>...">]>
token <Block token: "unknown_tag_name_foo...">
token_type 2
During handling of the above exception ('unknown_tag_name_foo'), another exception occurred:
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/core/handlers/exception.py
, line 55, in innerreturn 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
Local vars
Variable Value exc TemplateSyntaxError("Invalid block tag on line 7: 'unknown_tag_name_foo', expected 'endblock'. Did you forget to register or load this tag?")
get_response <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7f05987b21b0>>
request <WSGIRequest: GET '/django_admin_tests/latest/english/defaults/500-template-broken/'>
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/core/handlers/base.py
, line 197, in _get_responseif response is None:
wrapped_callback = self.make_view_atomic(callback)
# If it is an asynchronous view, run it in a subthread.
if iscoroutinefunction(wrapped_callback):
wrapped_callback = async_to_sync(wrapped_callback)
try:
response = wrapped_callback(request, *callback_args, **callback_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
…
except Exception as e:
response = self.process_exception_by_middleware(e, request)
if response is None:
raise
# Complain if the view returned None (a common error).
Local vars
Variable Value callback <function server_error_template_broken at 0x7f0596536f20>
callback_args ()
callback_kwargs {}
middleware_method <bound method CsrfViewMiddleware.process_view of <CsrfViewMiddleware get_response=convert_exception_to_response.<locals>.inner>>
request <WSGIRequest: GET '/django_admin_tests/latest/english/defaults/500-template-broken/'>
response None
self <django.core.handlers.wsgi.WSGIHandler object at 0x7f05987b21b0>
wrapped_callback <function server_error_template_broken at 0x7f0596536f20>
-
/home/runner/work/django_admin_tests/django_admin_tests/demo/demo_urls.py
, line 45, in server_error_template_brokendef server_error_template_broken(request):
request.META = {
"SERVER_NAME": "Hello",
"SERVER_PORT": 1337,
}
return render(request, "demo/broken_template.html") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
…
def server_error_unicode(request):
request.META = {
"SERVER_NAME": "Hello",
"SERVER_PORT": 1337,
Local vars
Variable Value request <WSGIRequest: GET '/django_admin_tests/latest/english/defaults/500-template-broken/'>
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/shortcuts.py
, line 25, in renderdef render(
request, template_name, context=None, content_type=None, status=None, using=None
):
"""
Return an HttpResponse whose content is filled with the result of calling
django.template.loader.render_to_string() with the passed arguments.
"""
content = loader.render_to_string(template_name, context, request, using=using) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
…
return HttpResponse(content, content_type, status)
def redirect(to, *args, permanent=False, **kwargs):
"""
Return an HttpResponseRedirect to the appropriate URL for the arguments
Local vars
Variable Value content_type None
context None
request <WSGIRequest: GET '/django_admin_tests/latest/english/defaults/500-template-broken/'>
status None
template_name 'demo/broken_template.html'
using None
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/template/loader.py
, line 61, in render_to_stringLoad a template and render it with a context. Return a string.
template_name may be a string or a list of strings.
"""
if isinstance(template_name, (list, tuple)):
template = select_template(template_name, using=using)
else:
template = get_template(template_name, using=using) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
…
return template.render(context, request)
def _engine_list(using=None):
return engines.all() if using is None else [engines[using]]
Local vars
Variable Value context None
request <WSGIRequest: GET '/django_admin_tests/latest/english/defaults/500-template-broken/'>
template_name 'demo/broken_template.html'
using None
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/template/loader.py
, line 15, in get_templateRaise TemplateDoesNotExist if no such template exists.
"""
chain = []
engines = _engine_list(using)
for engine in engines:
try:
return engine.get_template(template_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
…
except TemplateDoesNotExist as e:
chain.append(e)
raise TemplateDoesNotExist(template_name, chain=chain)
Local vars
Variable Value chain []
engine <django.template.backends.django.DjangoTemplates object at 0x7f05969828a0>
engines [<django.template.backends.django.DjangoTemplates object at 0x7f05969828a0>]
template_name 'demo/broken_template.html'
using None
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/template/backends/django.py
, line 79, in get_templatereturn errors
def from_string(self, template_code):
return Template(self.engine.from_string(template_code), self)
def get_template(self, template_name):
try:
return Template(self.engine.get_template(template_name), self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
…
except TemplateDoesNotExist as exc:
reraise(exc, self)
def get_templatetag_libraries(self, custom_libraries):
"""
Return a collation of template tag libraries from installed
Local vars
Variable Value self <django.template.backends.django.DjangoTemplates object at 0x7f05969828a0>
template_name 'demo/broken_template.html'
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/template/engine.py
, line 177, in get_templatereturn Template(template_code, engine=self)
def get_template(self, template_name):
"""
Return a compiled Template object for the given template name,
handling template inheritance recursively.
"""
template, origin = self.find_template(template_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
…
if not hasattr(template, "render"):
# template needs to be compiled
template = Template(template, origin, template_name, engine=self)
return template
def render_to_string(self, template_name, context=None):
Local vars
Variable Value self <Engine: app_dirs=True context_processors=['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages'] debug=True loaders=[('django.template.loaders.cached.Loader', ['django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader'])] string_if_invalid='' file_charset='utf-8' libraries={'cache': 'django.templatetags.cache', 'i18n': 'django.templatetags.i18n', 'l10n': 'django.templatetags.l10n', 'static': 'django.templatetags.static', 'tz': 'django.templatetags.tz', 'admin_list': 'django.contrib.admin.templatetags.admin_list', 'admin_modify': 'django.contrib.admin.templatetags.admin_modify', 'admin_urls': 'django.contrib.admin.templatetags.admin_urls', 'log': 'django.contrib.admin.templatetags.log', 'flatpages': 'django.contrib.flatpages.templatetags.flatpages'} builtins=['django.template.defaulttags', 'django.template.defaultfilters', 'django.template.loader_tags'] autoescape=True>
template_name 'demo/broken_template.html'
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/template/engine.py
, line 159, in find_template"Invalid value in template loaders configuration: %r" % loader
)
def find_template(self, name, dirs=None, skip=None):
tried = []
for loader in self.template_loaders:
try:
template = loader.get_template(name, skip=skip) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
…
return template, template.origin
except TemplateDoesNotExist as e:
tried.extend(e.tried)
raise TemplateDoesNotExist(name, tried=tried)
def from_string(self, template_code):
Local vars
Variable Value dirs None
loader <django.template.loaders.cached.Loader object at 0x7f0595110620>
name 'demo/broken_template.html'
self <Engine: app_dirs=True context_processors=['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages'] debug=True loaders=[('django.template.loaders.cached.Loader', ['django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader'])] string_if_invalid='' file_charset='utf-8' libraries={'cache': 'django.templatetags.cache', 'i18n': 'django.templatetags.i18n', 'l10n': 'django.templatetags.l10n', 'static': 'django.templatetags.static', 'tz': 'django.templatetags.tz', 'admin_list': 'django.contrib.admin.templatetags.admin_list', 'admin_modify': 'django.contrib.admin.templatetags.admin_modify', 'admin_urls': 'django.contrib.admin.templatetags.admin_urls', 'log': 'django.contrib.admin.templatetags.log', 'flatpages': 'django.contrib.flatpages.templatetags.flatpages'} builtins=['django.template.defaulttags', 'django.template.defaultfilters', 'django.template.loader_tags'] autoescape=True>
skip None
tried []
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/template/loaders/cached.py
, line 57, in get_templateif isinstance(cached, type) and issubclass(cached, TemplateDoesNotExist):
raise cached(template_name)
elif isinstance(cached, TemplateDoesNotExist):
raise copy_exception(cached)
return cached
try:
template = super().get_template(template_name, skip) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
…
except TemplateDoesNotExist as e:
self.get_template_cache[key] = (
copy_exception(e) if self.engine.debug else TemplateDoesNotExist
)
raise
else:
Local vars
Variable Value __class__ <class 'django.template.loaders.cached.Loader'>
cached None
key 'demo/broken_template.html'
self <django.template.loaders.cached.Loader object at 0x7f0595110620>
skip None
template_name 'demo/broken_template.html'
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/template/loaders/base.py
, line 28, in get_templatetry:
contents = self.get_contents(origin)
except TemplateDoesNotExist:
tried.append((origin, "Source does not exist"))
continue
else:
return Template(
…
contents,
origin,
origin.template_name,
self.engine,
)
Local vars
Variable Value contents ('{% extends "demo/base.html" %}\n' '{% block title %}Broken template{% endblock %}\n' '{% block h1 %}Broken template{% endblock %}\n' '\n' '{% block content %}\n' ' <p>This is a test.</p>\n' ' <p>{% unknown_tag_name_foo %}</p>\n' '{% endblock %}\n')
origin <Origin name='/home/runner/work/django_admin_tests/django_admin_tests/demo/templates/demo/broken_template.html'>
self <django.template.loaders.cached.Loader object at 0x7f0595110620>
skip None
template_name 'demo/broken_template.html'
tried []
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/template/base.py
, line 154, in __init__engine = Engine.get_default()
if origin is None:
origin = Origin(UNKNOWN_SOURCE)
self.name = name
self.origin = origin
self.engine = engine
self.source = str(template_string) # May be lazy.
self.nodelist = self.compile_nodelist() ^^^^^^^^^^^^^^^^^^^^^^^
…
def __repr__(self):
return '<%s template_string="%s...">' % (
self.__class__.__qualname__,
self.source[:20].replace("\n", ""),
)
Local vars
Variable Value engine <Engine: app_dirs=True context_processors=['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages'] debug=True loaders=[('django.template.loaders.cached.Loader', ['django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader'])] string_if_invalid='' file_charset='utf-8' libraries={'cache': 'django.templatetags.cache', 'i18n': 'django.templatetags.i18n', 'l10n': 'django.templatetags.l10n', 'static': 'django.templatetags.static', 'tz': 'django.templatetags.tz', 'admin_list': 'django.contrib.admin.templatetags.admin_list', 'admin_modify': 'django.contrib.admin.templatetags.admin_modify', 'admin_urls': 'django.contrib.admin.templatetags.admin_urls', 'log': 'django.contrib.admin.templatetags.log', 'flatpages': 'django.contrib.flatpages.templatetags.flatpages'} builtins=['django.template.defaulttags', 'django.template.defaultfilters', 'django.template.loader_tags'] autoescape=True>
name 'demo/broken_template.html'
origin <Origin name='/home/runner/work/django_admin_tests/django_admin_tests/demo/templates/demo/broken_template.html'>
self <Template template_string="{% extends "demo/bas...">
template_string ('{% extends "demo/base.html" %}\n' '{% block title %}Broken template{% endblock %}\n' '{% block h1 %}Broken template{% endblock %}\n' '\n' '{% block content %}\n' ' <p>This is a test.</p>\n' ' <p>{% unknown_tag_name_foo %}</p>\n' '{% endblock %}\n')
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/template/base.py
, line 196, in compile_nodelisttokens,
self.engine.template_libraries,
self.engine.template_builtins,
self.origin,
)
try:
nodelist = parser.parse() ^^^^^^^^^^^^^^
…
self.extra_data = parser.extra_data
return nodelist
except Exception as e:
if self.engine.debug:
e.template_debug = self.get_exception_info(e, e.token)
raise
Local vars
Variable Value lexer <DebugLexer template_string="{% extends "demo/bas...", verbatim=False>
parser <Parser tokens=[<Text token: "...">, <Block token: "endblock...">, <Text token: "</p>...">]>
self <Template template_string="{% extends "demo/bas...">
tokens [<Block token: "extends "demo/base.h...">, <Text token: "...">, <Block token: "block title...">, <Text token: "Broken template...">, <Block token: "endblock...">, <Text token: "...">, <Block token: "block h1...">, <Text token: "Broken template...">, <Block token: "endblock...">, <Text token: "...">, <Block token: "block content...">, <Text token: " <p>This is a test...">, <Block token: "unknown_tag_name_foo...">, <Text token: "</p>...">, <Block token: "endblock...">, <Text token: "...">]
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/template/base.py
, line 518, in parseexcept KeyError:
self.invalid_block_tag(token, command, parse_until)
# Compile the callback into a node object and add it to
# the node list.
try:
compiled_result = compile_func(self, token)
except Exception as e:
raise self.error(token, e) ^^^^^^^^^^^^^^^^^^^^^^^^^^
…
self.extend_nodelist(nodelist, compiled_result, token)
# Compile success. Remove the token from the command stack.
self.command_stack.pop()
if parse_until:
self.unclosed_block_tag(parse_until)
return nodelist
Local vars
Variable Value command 'extends'
compile_func <function do_extends at 0x7f0597d76020>
nodelist []
parse_until []
self <Parser tokens=[<Text token: "...">, <Block token: "endblock...">, <Text token: "</p>...">]>
token <Block token: "extends "demo/base.h...">
token_type 2
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/template/base.py
, line 516, in parsetry:
compile_func = self.tags[command]
except KeyError:
self.invalid_block_tag(token, command, parse_until)
# Compile the callback into a node object and add it to
# the node list.
try:
compiled_result = compile_func(self, token) ^^^^^^^^^^^^^^^^^^^^^^^^^
…
except Exception as e:
raise self.error(token, e)
self.extend_nodelist(nodelist, compiled_result, token)
# Compile success. Remove the token from the command stack.
self.command_stack.pop()
if parse_until:
Local vars
Variable Value command 'extends'
compile_func <function do_extends at 0x7f0597d76020>
nodelist []
parse_until []
self <Parser tokens=[<Text token: "...">, <Block token: "endblock...">, <Text token: "</p>...">]>
token <Block token: "extends "demo/base.h...">
token_type 2
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/template/loader_tags.py
, line 295, in do_extendsthe parent template itself (if it evaluates to a Template object).
"""
bits = token.split_contents()
if len(bits) != 2:
raise TemplateSyntaxError("'%s' takes one argument" % bits[0])
bits[1] = construct_relative_path(parser.origin.template_name, bits[1])
parent_name = parser.compile_filter(bits[1])
nodelist = parser.parse() ^^^^^^^^^^^^^^
…
if nodelist.get_nodes_by_type(ExtendsNode):
raise TemplateSyntaxError(
"'%s' cannot appear more than once in the same template" % bits[0]
)
return ExtendsNode(nodelist, parent_name)
Local vars
Variable Value bits ['extends', '"demo/base.html"']
parent_name <FilterExpression '"demo/base.html"'>
parser <Parser tokens=[<Text token: "...">, <Block token: "endblock...">, <Text token: "</p>...">]>
token <Block token: "extends "demo/base.h...">
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/template/base.py
, line 518, in parseexcept KeyError:
self.invalid_block_tag(token, command, parse_until)
# Compile the callback into a node object and add it to
# the node list.
try:
compiled_result = compile_func(self, token)
except Exception as e:
raise self.error(token, e) ^^^^^^^^^^^^^^^^^^^^^^^^^^
…
self.extend_nodelist(nodelist, compiled_result, token)
# Compile success. Remove the token from the command stack.
self.command_stack.pop()
if parse_until:
self.unclosed_block_tag(parse_until)
return nodelist
Local vars
Variable Value command 'block'
compile_func <function do_block at 0x7f0597d75ee0>
compiled_result <Block Node: h1. Contents: [<TextNode: 'Broken template'>]>
nodelist [<TextNode: '\n'>, <Block Node: title. Contents: [<TextNode: 'Broken template'>]>, <TextNode: '\n'>, <Block Node: h1. Contents: [<TextNode: 'Broken template'>]>, <TextNode: '\n\n'>]
parse_until []
self <Parser tokens=[<Text token: "...">, <Block token: "endblock...">, <Text token: "</p>...">]>
token <Block token: "block content...">
token_type 2
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/template/base.py
, line 516, in parsetry:
compile_func = self.tags[command]
except KeyError:
self.invalid_block_tag(token, command, parse_until)
# Compile the callback into a node object and add it to
# the node list.
try:
compiled_result = compile_func(self, token) ^^^^^^^^^^^^^^^^^^^^^^^^^
…
except Exception as e:
raise self.error(token, e)
self.extend_nodelist(nodelist, compiled_result, token)
# Compile success. Remove the token from the command stack.
self.command_stack.pop()
if parse_until:
Local vars
Variable Value command 'block'
compile_func <function do_block at 0x7f0597d75ee0>
compiled_result <Block Node: h1. Contents: [<TextNode: 'Broken template'>]>
nodelist [<TextNode: '\n'>, <Block Node: title. Contents: [<TextNode: 'Broken template'>]>, <TextNode: '\n'>, <Block Node: h1. Contents: [<TextNode: 'Broken template'>]>, <TextNode: '\n\n'>]
parse_until []
self <Parser tokens=[<Text token: "...">, <Block token: "endblock...">, <Text token: "</p>...">]>
token <Block token: "block content...">
token_type 2
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/template/loader_tags.py
, line 234, in do_blockif block_name in parser.__loaded_blocks:
raise TemplateSyntaxError(
"'%s' tag with name '%s' appears more than once" % (bits[0], block_name)
)
parser.__loaded_blocks.append(block_name)
except AttributeError: # parser.__loaded_blocks isn't a list yet
parser.__loaded_blocks = [block_name]
nodelist = parser.parse(("endblock",)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^
…
# This check is kept for backwards-compatibility. See #3100.
endblock = parser.next_token()
acceptable_endblocks = ("endblock", "endblock %s" % block_name)
if endblock.contents not in acceptable_endblocks:
parser.invalid_block_tag(endblock, "endblock", acceptable_endblocks)
Local vars
Variable Value bits ['block', 'content']
block_name 'content'
parser <Parser tokens=[<Text token: "...">, <Block token: "endblock...">, <Text token: "</p>...">]>
token <Block token: "block content...">
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/template/base.py
, line 512, in parse# tag.
self.command_stack.append((command, token))
# Get the tag callback function from the ones registered with
# the parser.
try:
compile_func = self.tags[command]
except KeyError:
self.invalid_block_tag(token, command, parse_until) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
…
# Compile the callback into a node object and add it to
# the node list.
try:
compiled_result = compile_func(self, token)
except Exception as e:
raise self.error(token, e)
Local vars
Variable Value command 'unknown_tag_name_foo'
nodelist [<TextNode: '\n <p>This is a test.</p>'>]
parse_until ('endblock',)
self <Parser tokens=[<Text token: "...">, <Block token: "endblock...">, <Text token: "</p>...">]>
token <Block token: "unknown_tag_name_foo...">
token_type 2
-
/home/runner/work/django_admin_tests/django_admin_tests/.venv/src/django/django/template/base.py
, line 567, in invalid_block_tage = TemplateSyntaxError(e)
if not hasattr(e, "token"):
e.token = token
return e
def invalid_block_tag(self, token, command, parse_until=None):
if parse_until:
raise self.error( ^
…
token,
"Invalid block tag on line %d: '%s', expected %s. Did you "
"forget to register or load this tag?"
% (
token.lineno,
command,
Local vars
Variable Value command 'unknown_tag_name_foo'
parse_until ('endblock',)
self <Parser tokens=[<Text token: "...">, <Block token: "endblock...">, <Text token: "</p>...">]>
token <Block token: "unknown_tag_name_foo...">
Request information
USER
AnonymousUser
GET
No GET data
POST
No POST data
FILES
No FILES data
COOKIES
No cookie data
META
Variable | Value |
---|---|
SERVER_NAME | 'Hello' |
SERVER_PORT | 1337 |
Settings
Using settings module demo.settings
Setting | Value |
---|---|
ABSOLUTE_URL_OVERRIDES | {} |
ADMINS | [] |
ALLOWED_HOSTS | ['*'] |
APPEND_SLASH | True |
AUTHENTICATION_BACKENDS | '********************' |
AUTH_PASSWORD_VALIDATORS | '********************' |
AUTH_USER_MODEL | '********************' |
BASE_DIR | PosixPath('/home/runner/work/django_admin_tests/django_admin_tests') |
CACHES | {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}} |
CACHE_MIDDLEWARE_ALIAS | 'default' |
CACHE_MIDDLEWARE_KEY_PREFIX | '********************' |
CACHE_MIDDLEWARE_SECONDS | 600 |
CSRF_COOKIE_AGE | 31449600 |
CSRF_COOKIE_DOMAIN | None |
CSRF_COOKIE_HTTPONLY | 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 | [] |
CSRF_USE_SESSIONS | False |
DATABASES | {'default': {'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_HEALTH_CHECKS': False, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.sqlite3', 'HOST': '', 'NAME': PosixPath('/home/runner/work/django_admin_tests/django_admin_tests/db.sqlite3'), 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': '', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': ''}} |
DATABASE_ROUTERS | [] |
DATA_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
DATA_UPLOAD_MAX_NUMBER_FIELDS | 1200 |
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 |
DEBUG_TOOLBAR_CONFIG | {'SHOW_TOOLBAR_CALLBACK': <function <lambda> at 0x7f05986ac400>} |
DECIMAL_SEPARATOR | '.' |
DEFAULT_AUTO_FIELD | 'django.db.models.BigAutoField' |
DEFAULT_CHARSET | 'utf-8' |
DEFAULT_EXCEPTION_REPORTER | 'django.views.debug.ExceptionReporter' |
DEFAULT_EXCEPTION_REPORTER_FILTER | 'django.views.debug.SafeExceptionReporterFilter' |
DEFAULT_FROM_EMAIL | 'webmaster@localhost' |
DEFAULT_INDEX_TABLESPACE | '' |
DEFAULT_TABLESPACE | '' |
DISALLOWED_USER_AGENTS | [] |
EMAIL_BACKEND | 'django.core.mail.backends.console.EmailBackend' |
EMAIL_HOST | 'localhost' |
EMAIL_HOST_PASSWORD | '********************' |
EMAIL_HOST_USER | '' |
EMAIL_PORT | 25 |
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 | False |
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 |
FORMS_URLFIELD_ASSUME_HTTPS | False |
FORM_RENDERER | 'django.forms.renderers.DjangoTemplates' |
IGNORABLE_404_URLS | [] |
INSTALLED_APPS | ['demo', 'debug_toolbar', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.redirects', 'django.contrib.sites', 'django.contrib.admindocs', 'django.contrib.flatpages'] |
INTERNAL_IPS | ['127.0.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'), ('ckb', 'Central Kurdish (Sorani)'), ('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'), ('ug', 'Uyghur'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('uz', 'Uzbek'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')] |
LANGUAGES_BIDI | ['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ug', '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 | {} |
LOGGING_CONFIG | 'logging.config.dictConfig' |
LOGIN_REDIRECT_URL | '/accounts/profile/' |
LOGIN_URL | '/accounts/login/' |
LOGOUT_REDIRECT_URL | None |
MANAGERS | [] |
MEDIA_ROOT | '' |
MEDIA_URL | '/' |
MESSAGE_STORAGE | 'django.contrib.messages.storage.fallback.FallbackStorage' |
MIDDLEWARE | ['debug_toolbar.middleware.DebugToolbarMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'demo.middleware.AutoLoginMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware'] |
MIGRATION_MODULES | {} |
MONTH_DAY_FORMAT | 'F j' |
NUMBER_GROUPING | 0 |
PASSWORD_HASHERS | '********************' |
PASSWORD_RESET_TIMEOUT | '********************' |
PREPEND_WWW | False |
ROOT_URLCONF | 'demo.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 | None |
SECURE_REDIRECT_EXEMPT | [] |
SECURE_REFERRER_POLICY | 'same-origin' |
SECURE_SSL_HOST | None |
SECURE_SSL_REDIRECT | False |
SERVER_EMAIL | 'root@localhost' |
SESSION_CACHE_ALIAS | 'default' |
SESSION_COOKIE_AGE | 1209600 |
SESSION_COOKIE_DOMAIN | None |
SESSION_COOKIE_HTTPONLY | False |
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 | 'demo.settings' |
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 | [] |
STATICFILES_FINDERS | ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder'] |
STATIC_ROOT | PosixPath('/home/runner/work/django_admin_tests/django_admin_tests/static') |
STATIC_URL | '/django_admin_tests/latest/english/static/' |
STORAGES | {'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'}, 'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.StaticFilesStorage'}} |
TEMPLATES | [{'APP_DIRS': True, 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], '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']}}] |
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_I18N | True |
USE_L10N | True |
USE_THOUSAND_SEPARATOR | False |
USE_TZ | True |
USE_X_FORWARDED_HOST | False |
USE_X_FORWARDED_PORT | False |
VARIANT | 'English' |
VARIANTS | ['English', 'German', 'Arabic'] |
VERSION_NUMBER | 'latest' |
VERSION_NUMBERS | {'latest': 'v5.2.dev20241105155934', 'v2.2': 'v2.2', 'v3.0': 'v3.0', 'v3.1': 'v3.1', 'v3.2': 'v3.2', 'v4.0': 'v4.0', 'v4.1': 'v4.1', 'v4.2': 'v4.2', 'v5.0': 'v5.0', 'v5.1': 'v5.1', 'v5.2': 'v5.2'} |
WSGI_APPLICATION | 'demo.wsgi.application' |
X_FRAME_OPTIONS | 'DENY' |
YEAR_MONTH_FORMAT | 'F Y' |