(1146, "Table 'ldo.ldo_photoalbum' doesn't exist")
Request Method: | GET |
---|---|
Request URL: | https://www.linville.org/photo/view/36/ |
Django Version: | 5.0.1 |
Exception Type: | ProgrammingError |
Exception Value: | (1146, "Table 'ldo.ldo_photoalbum' doesn't exist") |
Exception Location: | /var/www/linville.org/.venv/lib/python3.10/site-packages/MySQLdb/connections.py, line 261, in query |
Raised during: | ldo.views.photo_detail |
Python Executable: | /var/www/linville.org/.venv/bin/python3 |
Python Version: | 3.10.12 |
Python Path: | ['/var/www/linville.org', '/var/www/linville.org/.venv/bin', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', '/var/www/linville.org/.venv/lib/python3.10/site-packages'] |
Server time: | Thu, 28 Mar 2024 16:42:45 -0400 |
In template /var/www/linville.org/ldo/templates/photo_detail.html
, error at line 39
29 | <dt>Title</dt> |
---|---|
30 | <dd itemprop="name">{{ photo.title }}</dd> |
31 | |
32 | <dt>Date</dt> |
33 | <dd itemprop="dateCreated">{{ photo.date }}</dd> |
34 | <meta itemprop="copyrightYear" content="{{ photo.date|date:"Y" }}"> |
35 | |
36 | <dt>Comment</dt> |
37 | <dd itemprop="description">{{ photo.comment }}</dd> |
38 | |
39 | {% if photo.albums.all %} |
40 | <dt>Albums</dt> |
41 | <dd> |
42 | {% for album in photo.albums.all %} |
43 | <a href="{% url "Photo Album" album.websafe_name %}">{{ album.name }}</a> |
44 | {% endfor %} |
45 | </dd> |
46 | {% endif %} |
47 | |
48 | {% if photo.categories.all %} |
49 | <dt>Categories</dt> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/db/backends/utils.py
, line 105, in _execute
warnings.warn(self.APPS_NOT_READY_WARNING_MSG, category=RuntimeWarning)
self.db.validate_no_broken_transaction()
with self.db.wrap_database_errors:
if params is None:
# params default might be backend specific.
return self.cursor.execute(sql)
else:
return self.cursor.execute(sql, params)…
def _executemany(self, sql, param_list, *ignored_wrapper_args):
# Raise a warning during app initialization (stored_app_configs is only
# ever set during testing).
if not apps.ready and not apps.stored_app_configs:
warnings.warn(self.APPS_NOT_READY_WARNING_MSG, category=RuntimeWarning)
Variable | Value |
---|---|
ignored_wrapper_args | (False, {'connection': <DatabaseWrapper vendor='mysql' alias='default'>, 'cursor': <django.db.backends.utils.CursorDebugWrapper object at 0x7f89e1b2ef80>}) |
params | (36,) |
self | <django.db.backends.utils.CursorDebugWrapper object at 0x7f89e1b2ef80> |
sql | ('SELECT `ldo_album`.`id`, `ldo_album`.`name`, `ldo_album`.`description` FROM ' '`ldo_album` INNER JOIN `ldo_photoalbum` ON (`ldo_album`.`id` = ' '`ldo_photoalbum`.`albumId`) WHERE `ldo_photoalbum`.`photoId` = %s ORDER BY ' '`ldo_album`.`name` ASC') |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py
, line 75, in execute
def __init__(self, cursor):
self.cursor = cursor
def execute(self, query, args=None):
try:
# args is None means no string interpolation
return self.cursor.execute(query, args)…
except Database.OperationalError as e:
# Map some error codes to IntegrityError, since they seem to be
# misclassified and Django would prefer the more logical place.
if e.args[0] in self.codes_for_integrityerror:
raise IntegrityError(*tuple(e.args))
raise
Variable | Value |
---|---|
args | (36,) |
query | ('SELECT `ldo_album`.`id`, `ldo_album`.`name`, `ldo_album`.`description` FROM ' '`ldo_album` INNER JOIN `ldo_photoalbum` ON (`ldo_album`.`id` = ' '`ldo_photoalbum`.`albumId`) WHERE `ldo_photoalbum`.`photoId` = %s ORDER BY ' '`ldo_album`.`name` ASC') |
self | <django.db.backends.mysql.base.CursorWrapper object at 0x7f89e1c662f0> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/MySQLdb/cursors.py
, line 179, in execute
Returns integer represents rows affected, if any
"""
self._discard()
mogrified_query = self._mogrify(query, args)
assert isinstance(mogrified_query, (bytes, bytearray))
res = self._query(mogrified_query)…
return res
def _mogrify(self, query, args=None):
"""Return query after binding args."""
db = self._get_db()
Variable | Value |
---|---|
args | (36,) |
mogrified_query | (b'SELECT `ldo_album`.`id`, `ldo_album`.`name`, `ldo_album`.`description` FROM ' b'`ldo_album` INNER JOIN `ldo_photoalbum` ON (`ldo_album`.`id` = `ldo_photoalb' b'um`.`albumId`) WHERE `ldo_photoalbum`.`photoId` = 36 ORDER BY `ldo_album`.`n' b'ame` ASC') |
query | ('SELECT `ldo_album`.`id`, `ldo_album`.`name`, `ldo_album`.`description` FROM ' '`ldo_album` INNER JOIN `ldo_photoalbum` ON (`ldo_album`.`id` = ' '`ldo_photoalbum`.`albumId`) WHERE `ldo_photoalbum`.`photoId` = %s ORDER BY ' '`ldo_album`.`name` ASC') |
self | <MySQLdb.cursors.Cursor object at 0x7f89e1c65e10> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/MySQLdb/cursors.py
, line 330, in _query
return args
def _query(self, q):
db = self._get_db()
self._result = None
self.rowcount = None
self.lastrowid = None
db.query(q)…
self._do_get_result(db)
self._post_get_result()
self._executed = q
return self.rowcount
def _fetch_row(self, size=1):
Variable | Value |
---|---|
db | <_mysql.connection open to 'localhost' at 0x563f78740ec0> |
q | (b'SELECT `ldo_album`.`id`, `ldo_album`.`name`, `ldo_album`.`description` FROM ' b'`ldo_album` INNER JOIN `ldo_photoalbum` ON (`ldo_album`.`id` = `ldo_photoalb' b'um`.`albumId`) WHERE `ldo_photoalbum`.`photoId` = 36 ORDER BY `ldo_album`.`n' b'ame` ASC') |
self | <MySQLdb.cursors.Cursor object at 0x7f89e1c65e10> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/MySQLdb/connections.py
, line 261, in query
"""
return (cursorclass or self.cursorclass)(self)
def query(self, query):
# Since _mysql releases GIL while querying, we need immutable buffer.
if isinstance(query, bytearray):
query = bytes(query)
_mysql.connection.query(self, query)…
def _bytes_literal(self, bs):
assert isinstance(bs, (bytes, bytearray))
x = self.string_literal(bs) # x is escaped and quoted bytes
if self._binary_prefix:
return b"_binary" + x
Variable | Value |
---|---|
query | (b'SELECT `ldo_album`.`id`, `ldo_album`.`name`, `ldo_album`.`description` FROM ' b'`ldo_album` INNER JOIN `ldo_photoalbum` ON (`ldo_album`.`id` = `ldo_photoalb' b'um`.`albumId`) WHERE `ldo_photoalbum`.`photoId` = 36 ORDER BY `ldo_album`.`n' b'ame` ASC') |
self | <_mysql.connection open to 'localhost' at 0x563f78740ec0> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/core/handlers/exception.py
, line 55, 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 | ProgrammingError(1146, "Table 'ldo.ldo_photoalbum' doesn't exist") |
get_response | <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7f89e2021cc0>> |
request | <WSGIRequest: GET '/photo/view/36/'> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/core/handlers/base.py
, line 197, in _get_response
if 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).
Variable | Value |
---|---|
callback | <function photo_detail at 0x7f89e1d07f40> |
callback_args | () |
callback_kwargs | {'photo_id': 36} |
middleware_method | <bound method CsrfViewMiddleware.process_view of <CsrfViewMiddleware get_response=convert_exception_to_response.<locals>.inner>> |
request | <WSGIRequest: GET '/photo/view/36/'> |
response | None |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7f89e2021cc0> |
wrapped_callback | <function photo_detail at 0x7f89e1d07f40> |
/var/www/linville.org/ldo/views.py
, line 188, in photo_detail
response["Cache-Control"] = "public, max-age=2592000"
response["Content-Disposition"] = f"inline; filename={photo.imagefilename}"
return response
context = {"photo": photo}
return render(request, "photo_detail.html", context)…
def track_list(request):
queryset = Track.objects.defer("kml")
tracks = get_list_or_404(queryset)
Variable | Value |
---|---|
context | {'photo': <Photo: Oryland Garden Fountains>} |
photo | <Photo: Oryland Garden Fountains> |
photo_id | 36 |
request | <WSGIRequest: GET '/photo/view/36/'> |
view | None |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/shortcuts.py
, line 24, in render
def 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
Variable | Value |
---|---|
content_type | None |
context | {'photo': <Photo: Oryland Garden Fountains>} |
request | <WSGIRequest: GET '/photo/view/36/'> |
status | None |
template_name | 'photo_detail.html' |
using | None |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/template/loader.py
, line 62, in render_to_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]]
Variable | Value |
---|---|
context | {'photo': <Photo: Oryland Garden Fountains>} |
request | <WSGIRequest: GET '/photo/view/36/'> |
template | <django.template.backends.django.Template object at 0x7f89e1c67cd0> |
template_name | 'photo_detail.html' |
using | None |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/template/backends/django.py
, line 61, in render
return self.template.origin
def render(self, context=None, request=None):
context = make_context(
context, request, autoescape=self.backend.engine.autoescape
)
try:
return self.template.render(context)…
except TemplateDoesNotExist as exc:
reraise(exc, self.backend)
def copy_exception(exc, backend=None):
"""
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'photo': <Photo: Oryland Garden Fountains>}] |
request | <WSGIRequest: GET '/photo/view/36/'> |
self | <django.template.backends.django.Template object at 0x7f89e1c67cd0> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/template/base.py
, line 171, in render
def render(self, context):
"Display stage -- can be called many times"
with context.render_context.push_state(self):
if context.template is None:
with context.bind_template(self):
context.template_name = self.name
return self._render(context)…
else:
return self._render(context)
def compile_nodelist(self):
"""
Parse and compile the template source into a nodelist. If debug
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'photo': <Photo: Oryland Garden Fountains>}] |
self | <Template template_string="{% extends "base.htm..."> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/template/base.py
, line 163, in _render
def __repr__(self):
return '<%s template_string="%s...">' % (
self.__class__.__qualname__,
self.source[:20].replace("\n", ""),
)
def _render(self, context):
return self.nodelist.render(context)…
def render(self, context):
"Display stage -- can be called many times"
with context.render_context.push_state(self):
if context.template is None:
with context.bind_template(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'photo': <Photo: Oryland Garden Fountains>}] |
self | <Template template_string="{% extends "base.htm..."> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/template/base.py
, line 1000, in render
class NodeList(list):
# Set to True the first time a non-TextNode is inserted by
# extend_nodelist().
contains_nontext = False
def render(self, context):
return SafeString("".join([node.render_annotated(context) for node in self]))…
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'photo': <Photo: Oryland Garden Fountains>}] |
self | [<ExtendsNode: extends "base.html">] |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/template/base.py
, line 1000, in <listcomp>
class NodeList(list):
# Set to True the first time a non-TextNode is inserted by
# extend_nodelist().
contains_nontext = False
def render(self, context):
return SafeString("".join([node.render_annotated(context) for node in self]))…
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
Variable | Value |
---|---|
.0 | <list_iterator object at 0x7f89e1c64f10> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'photo': <Photo: Oryland Garden Fountains>}] |
node | <ExtendsNode: extends "base.html"> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/template/base.py
, line 961, in render_annotated
"""
Render the node. If debug is True and an exception occurs during
rendering, the exception is annotated with contextual line information
where it occurred in the template. For internal usage this method is
preferred over using the render method directly.
"""
try:
return self.render(context)…
except Exception as e:
if context.template.engine.debug:
# Store the actual node that caused the exception.
if not hasattr(e, "_culprit_node"):
e._culprit_node = self
if (
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'photo': <Photo: Oryland Garden Fountains>}] |
self | <ExtendsNode: extends "base.html"> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/template/loader_tags.py
, line 159, in render
}
block_context.add_blocks(blocks)
break
# Call Template._render explicitly so the parser context stays
# the same.
with context.render_context.push_state(compiled_parent, isolated_context=False):
return compiled_parent._render(context)…
class IncludeNode(Node):
context_key = "__include_context"
def __init__(
Variable | Value |
---|---|
block_context | <BlockContext: blocks=defaultdict(<class 'list'>, {'title': [<Block Node: title. Contents: []>, <Block Node: title. Contents: [<Variable Node: photo.title>]>], 'description': [<Block Node: description. Contents: []>, <Block Node: description. Contents: [<Variable Node: photo.comment>]>], 'navphoto': [<Block Node: navphoto. Contents: []>, <Block Node: navphoto. Contents: [<TextNode: 'active'>]>], 'content': [<Block Node: content. Contents: [<TextNode: '(no content)'>]>], 'extrahead': [<Block Node: extrahead. Contents: []>], 'navarticle': [<Block Node: navarticle. Contents: []>], 'navresume': [<Block Node: navresume. Contents: []>], 'navtrack': [<Block Node: navtrack. Contents: []>], 'javascript': [<Block Node: javascript. Contents: []>]})> |
blocks | {'content': <Block Node: content. Contents: [<TextNode: '(no content)'>]>, 'description': <Block Node: description. Contents: []>, 'extrahead': <Block Node: extrahead. Contents: []>, 'javascript': <Block Node: javascript. Contents: []>, 'navarticle': <Block Node: navarticle. Contents: []>, 'navphoto': <Block Node: navphoto. Contents: []>, 'navresume': <Block Node: navresume. Contents: []>, 'navtrack': <Block Node: navtrack. Contents: []>, 'title': <Block Node: title. Contents: []>} |
compiled_parent | <Template template_string="{% load staticfiles ..."> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'photo': <Photo: Oryland Garden Fountains>}] |
node | <django.template.defaulttags.LoadNode object at 0x7f89e1c4f670> |
self | <ExtendsNode: extends "base.html"> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/template/base.py
, line 163, in _render
def __repr__(self):
return '<%s template_string="%s...">' % (
self.__class__.__qualname__,
self.source[:20].replace("\n", ""),
)
def _render(self, context):
return self.nodelist.render(context)…
def render(self, context):
"Display stage -- can be called many times"
with context.render_context.push_state(self):
if context.template is None:
with context.bind_template(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'photo': <Photo: Oryland Garden Fountains>}] |
self | <Template template_string="{% load staticfiles ..."> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/template/base.py
, line 1000, in render
class NodeList(list):
# Set to True the first time a non-TextNode is inserted by
# extend_nodelist().
contains_nontext = False
def render(self, context):
return SafeString("".join([node.render_annotated(context) for node in self]))…
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'photo': <Photo: Oryland Garden Fountains>}] |
self | [<django.template.defaulttags.LoadNode object at 0x7f89e1c4f670>, <TextNode: '\n<!DOCTYPE html>\n<html la'>, <Block Node: description. Contents: []>, <TextNode: '">\n\t\t<meta name="author" '>, <Block Node: title. Contents: []>, <TextNode: '</title>\n\n\t\t<link rel="ap'>, StaticNode(varname=None, path=<FilterExpression '"img/apple-touch-icon.png"'>), <TextNode: '">\n\t\t<link rel="shortcut '>, StaticNode(varname=None, path=<FilterExpression '"img/favicon.ico"'>), <TextNode: '" type="image/x-icon">\n\n\t'>, <Block Node: extrahead. Contents: []>, <TextNode: '\n\t</head>\n\n\t<body>\n\t\t<nav'>, <URLNode view_name=''Index'' args=[] kwargs={} as=None>, <TextNode: '">Linville.org</a>\n\t\t\t\n\t\t'>, <Block Node: navarticle. Contents: []>, <TextNode: '">\n\t\t\t\t\t\t\t<a class="nav-l'>, <URLNode view_name='"Article List"' args=[] kwargs={} as=None>, <TextNode: '">Articles</a>\n\t\t\t\t\t\t</li'>, <Block Node: navphoto. Contents: []>, <TextNode: '">\n\t\t\t\t\t\t\t<a class="nav-l'>, <URLNode view_name='"Photo Index"' args=[] kwargs={} as=None>, <TextNode: '">Photos</a>\n\t\t\t\t\t\t</li>\n'>, <Block Node: navresume. Contents: []>, <TextNode: '">\n\t\t\t\t\t\t\t<a class="nav-l'>, <URLNode view_name=''Resume'' args=[] kwargs={} as=None>, <TextNode: '">Resume</a>\n\t\t\t\t\t\t</li>\n'>, <Block Node: navtrack. Contents: []>, <TextNode: '">\n\t\t\t\t\t\t\t<a class="nav-l'>, <URLNode view_name=''Track List'' args=[] kwargs={} as=None>, <TextNode: '">Tracks</a>\n\t\t\t\t\t\t</li>\n'>, <IfNode>, <TextNode: '\n\t\t\t</div>\n\t\t</nav>\n\n\t\t<d'>, <Block Node: content. Contents: [<TextNode: '(no content)'>]>, <TextNode: '\n\t\t\t<hr>\n\t\t\t<footer class'>, <django.template.defaulttags.NowNode object at 0x7f89e1c64820>, <TextNode: ' by Aaron Linville.</p>\n\t'>, <Block Node: javascript. Contents: []>, <TextNode: '\n\t</body>\n</html>'>] |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/template/base.py
, line 1000, in <listcomp>
class NodeList(list):
# Set to True the first time a non-TextNode is inserted by
# extend_nodelist().
contains_nontext = False
def render(self, context):
return SafeString("".join([node.render_annotated(context) for node in self]))…
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
Variable | Value |
---|---|
.0 | <list_iterator object at 0x7f89e1b2c0a0> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'photo': <Photo: Oryland Garden Fountains>}] |
node | <Block Node: content. Contents: [<TextNode: '(no content)'>]> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/template/base.py
, line 961, in render_annotated
"""
Render the node. If debug is True and an exception occurs during
rendering, the exception is annotated with contextual line information
where it occurred in the template. For internal usage this method is
preferred over using the render method directly.
"""
try:
return self.render(context)…
except Exception as e:
if context.template.engine.debug:
# Store the actual node that caused the exception.
if not hasattr(e, "_culprit_node"):
e._culprit_node = self
if (
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'photo': <Photo: Oryland Garden Fountains>}] |
self | <Block Node: content. Contents: [<TextNode: '(no content)'>]> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/template/loader_tags.py
, line 65, in render
push = block = block_context.pop(self.name)
if block is None:
block = self
# Create new block so we can store context without thread-safety issues.
block = type(self)(block.name, block.nodelist)
block.context = context
context["block"] = block
result = block.nodelist.render(context)…
if push is not None:
block_context.push(self.name, push)
return result
def super(self):
if not hasattr(self, "context"):
Variable | Value |
---|---|
block | <Block Node: content. Contents: [<TextNode: '\n\n<nav aria-label="breadc'>, <URLNode view_name=''Index'' args=[] kwargs={} as=None>, <TextNode: '">Home</a></li>\n\t\t<li cla'>, <URLNode view_name=''Photo Index'' args=[] kwargs={} as=None>, <TextNode: '">Photos</a></li>\n\t\t<li c'>, <Variable Node: photo.title>, <TextNode: '</li>\n\t</ol>\n</nav>\n\n<div'>, <URLNode view_name='"Photo Detail"' args=[<FilterExpression 'photo.pk'>] kwargs={} as=None>, <TextNode: '?view=full"\n\t\tclass="cent'>, <Variable Node: photo.title>, <TextNode: '"\n\t\titemprop="image">\n\n\t<'>, <Variable Node: photo.title>, <TextNode: '</dd>\n\n\t\t\t\t<dt>Date</dt>\n'>, <Variable Node: photo.date>, <TextNode: '</dd>\n\t\t\t\t<meta itemprop='>, <Variable Node: photo.date|date:"Y">, <TextNode: '">\n\n\t\t\t\t<dt>Comment</dt>\n'>, <Variable Node: photo.comment>, <TextNode: '</dd>\n\n\t\t\t\t'>, <IfNode>, <TextNode: '\n\n\t\t\t\t'>, <IfNode>, <TextNode: '\n\t\t\t</dl>\n\t\t</div>\n\t\t<div'>]> |
block_context | <BlockContext: blocks=defaultdict(<class 'list'>, {'title': [<Block Node: title. Contents: []>, <Block Node: title. Contents: [<Variable Node: photo.title>]>], 'description': [<Block Node: description. Contents: []>, <Block Node: description. Contents: [<Variable Node: photo.comment>]>], 'navphoto': [<Block Node: navphoto. Contents: []>, <Block Node: navphoto. Contents: [<TextNode: 'active'>]>], 'content': [<Block Node: content. Contents: [<TextNode: '(no content)'>]>], 'extrahead': [<Block Node: extrahead. Contents: []>], 'navarticle': [<Block Node: navarticle. Contents: []>], 'navresume': [<Block Node: navresume. Contents: []>], 'navtrack': [<Block Node: navtrack. Contents: []>], 'javascript': [<Block Node: javascript. Contents: []>]})> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'photo': <Photo: Oryland Garden Fountains>}] |
push | <Block Node: content. Contents: [<TextNode: '\n\n<nav aria-label="breadc'>, <URLNode view_name=''Index'' args=[] kwargs={} as=None>, <TextNode: '">Home</a></li>\n\t\t<li cla'>, <URLNode view_name=''Photo Index'' args=[] kwargs={} as=None>, <TextNode: '">Photos</a></li>\n\t\t<li c'>, <Variable Node: photo.title>, <TextNode: '</li>\n\t</ol>\n</nav>\n\n<div'>, <URLNode view_name='"Photo Detail"' args=[<FilterExpression 'photo.pk'>] kwargs={} as=None>, <TextNode: '?view=full"\n\t\tclass="cent'>, <Variable Node: photo.title>, <TextNode: '"\n\t\titemprop="image">\n\n\t<'>, <Variable Node: photo.title>, <TextNode: '</dd>\n\n\t\t\t\t<dt>Date</dt>\n'>, <Variable Node: photo.date>, <TextNode: '</dd>\n\t\t\t\t<meta itemprop='>, <Variable Node: photo.date|date:"Y">, <TextNode: '">\n\n\t\t\t\t<dt>Comment</dt>\n'>, <Variable Node: photo.comment>, <TextNode: '</dd>\n\n\t\t\t\t'>, <IfNode>, <TextNode: '\n\n\t\t\t\t'>, <IfNode>, <TextNode: '\n\t\t\t</dl>\n\t\t</div>\n\t\t<div'>]> |
self | <Block Node: content. Contents: [<TextNode: '(no content)'>]> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/template/base.py
, line 1000, in render
class NodeList(list):
# Set to True the first time a non-TextNode is inserted by
# extend_nodelist().
contains_nontext = False
def render(self, context):
return SafeString("".join([node.render_annotated(context) for node in self]))…
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'photo': <Photo: Oryland Garden Fountains>}] |
self | [<TextNode: '\n\n<nav aria-label="breadc'>, <URLNode view_name=''Index'' args=[] kwargs={} as=None>, <TextNode: '">Home</a></li>\n\t\t<li cla'>, <URLNode view_name=''Photo Index'' args=[] kwargs={} as=None>, <TextNode: '">Photos</a></li>\n\t\t<li c'>, <Variable Node: photo.title>, <TextNode: '</li>\n\t</ol>\n</nav>\n\n<div'>, <URLNode view_name='"Photo Detail"' args=[<FilterExpression 'photo.pk'>] kwargs={} as=None>, <TextNode: '?view=full"\n\t\tclass="cent'>, <Variable Node: photo.title>, <TextNode: '"\n\t\titemprop="image">\n\n\t<'>, <Variable Node: photo.title>, <TextNode: '</dd>\n\n\t\t\t\t<dt>Date</dt>\n'>, <Variable Node: photo.date>, <TextNode: '</dd>\n\t\t\t\t<meta itemprop='>, <Variable Node: photo.date|date:"Y">, <TextNode: '">\n\n\t\t\t\t<dt>Comment</dt>\n'>, <Variable Node: photo.comment>, <TextNode: '</dd>\n\n\t\t\t\t'>, <IfNode>, <TextNode: '\n\n\t\t\t\t'>, <IfNode>, <TextNode: '\n\t\t\t</dl>\n\t\t</div>\n\t\t<div'>] |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/template/base.py
, line 1000, in <listcomp>
class NodeList(list):
# Set to True the first time a non-TextNode is inserted by
# extend_nodelist().
contains_nontext = False
def render(self, context):
return SafeString("".join([node.render_annotated(context) for node in self]))…
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
Variable | Value |
---|---|
.0 | <list_iterator object at 0x7f89e1c66110> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'photo': <Photo: Oryland Garden Fountains>}] |
node | <IfNode> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/template/base.py
, line 961, in render_annotated
"""
Render the node. If debug is True and an exception occurs during
rendering, the exception is annotated with contextual line information
where it occurred in the template. For internal usage this method is
preferred over using the render method directly.
"""
try:
return self.render(context)…
except Exception as e:
if context.template.engine.debug:
# Store the actual node that caused the exception.
if not hasattr(e, "_culprit_node"):
e._culprit_node = self
if (
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'photo': <Photo: Oryland Garden Fountains>}] |
self | <IfNode> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/template/defaulttags.py
, line 324, in render
try:
match = condition.eval(context)
except VariableDoesNotExist:
match = None
else: # else clause
match = True
if match:…
return nodelist.render(context)
return ""
class LoremNode(Node):
Variable | Value |
---|---|
condition | (literal <FilterExpression 'photo.albums.all'>) |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'photo': <Photo: Oryland Garden Fountains>}] |
match | Error in formatting: ProgrammingError: (1146, "Table 'ldo.ldo_photoalbum' doesn't exist") |
nodelist | [<TextNode: '\n\t\t\t\t\t<dt>Albums</dt>\n\t\t\t'>, <ForNode: for album in photo.albums.all, tail_len: 5>, <TextNode: '\n\t\t\t\t\t</dd>\n\t\t\t\t'>] |
self | <IfNode> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/db/models/query.py
, line 412, in __bool__
await sync_to_async(self._fetch_all)()
for item in self._result_cache:
yield item
return generator()
def __bool__(self):
self._fetch_all()…
return bool(self._result_cache)
def __getitem__(self, k):
"""Retrieve an item or slice from the set of results."""
if not isinstance(k, (int, slice)):
raise TypeError(
Variable | Value |
---|---|
self | Error in formatting: ProgrammingError: (1146, "Table 'ldo.ldo_photoalbum' doesn't exist") |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/db/models/query.py
, line 1926, in _fetch_all
c._known_related_objects = self._known_related_objects
c._iterable_class = self._iterable_class
c._fields = self._fields
return c
def _fetch_all(self):
if self._result_cache is None:
self._result_cache = list(self._iterable_class(self))…
if self._prefetch_related_lookups and not self._prefetch_done:
self._prefetch_related_objects()
def _next_is_sticky(self):
"""
Indicate that the next filter call and the one following that should
Variable | Value |
---|---|
self | Error in formatting: ProgrammingError: (1146, "Table 'ldo.ldo_photoalbum' doesn't exist") |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/db/models/query.py
, line 91, in __iter__
def __iter__(self):
queryset = self.queryset
db = queryset.db
compiler = queryset.query.get_compiler(using=db)
# Execute the query. This will also fill compiler.select, klass_info,
# and annotations.
results = compiler.execute_sql(…
chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size
)
select, klass_info, annotation_col_map = (
compiler.select,
compiler.klass_info,
compiler.annotation_col_map,
Variable | Value |
---|---|
compiler | <SQLCompiler model=Album connection=<DatabaseWrapper vendor='mysql' alias='default'> using='default'> |
db | 'default' |
queryset | Error in formatting: ProgrammingError: (1146, "Table 'ldo.ldo_photoalbum' doesn't exist") |
self | <django.db.models.query.ModelIterable object at 0x7f89e1c66950> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/db/models/sql/compiler.py
, line 1562, in execute_sql
else:
return
if chunked_fetch:
cursor = self.connection.chunked_cursor()
else:
cursor = self.connection.cursor()
try:
cursor.execute(sql, params)…
except Exception:
# Might fail for server-side cursors (e.g. connection closed)
cursor.close()
raise
if result_type == CURSOR:
Variable | Value |
---|---|
chunk_size | 100 |
chunked_fetch | False |
cursor | <django.db.backends.utils.CursorDebugWrapper object at 0x7f89e1b2ef80> |
params | (36,) |
result_type | 'multi' |
self | <SQLCompiler model=Album connection=<DatabaseWrapper vendor='mysql' alias='default'> using='default'> |
sql | ('SELECT `ldo_album`.`id`, `ldo_album`.`name`, `ldo_album`.`description` FROM ' '`ldo_album` INNER JOIN `ldo_photoalbum` ON (`ldo_album`.`id` = ' '`ldo_photoalbum`.`albumId`) WHERE `ldo_photoalbum`.`photoId` = %s ORDER BY ' '`ldo_album`.`name` ASC') |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/db/backends/utils.py
, line 122, in execute
class CursorDebugWrapper(CursorWrapper):
# XXX callproc isn't instrumented at this time.
def execute(self, sql, params=None):
with self.debug_sql(sql, params, use_last_executed_query=True):
return super().execute(sql, params)…
def executemany(self, sql, param_list):
with self.debug_sql(sql, param_list, many=True):
return super().executemany(sql, param_list)
@contextmanager
Variable | Value |
---|---|
__class__ | <class 'django.db.backends.utils.CursorDebugWrapper'> |
params | (36,) |
self | <django.db.backends.utils.CursorDebugWrapper object at 0x7f89e1b2ef80> |
sql | ('SELECT `ldo_album`.`id`, `ldo_album`.`name`, `ldo_album`.`description` FROM ' '`ldo_album` INNER JOIN `ldo_photoalbum` ON (`ldo_album`.`id` = ' '`ldo_photoalbum`.`albumId`) WHERE `ldo_photoalbum`.`photoId` = %s ORDER BY ' '`ldo_album`.`name` ASC') |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/db/backends/utils.py
, line 79, in execute
elif kparams is None:
return self.cursor.callproc(procname, params)
else:
params = params or ()
return self.cursor.callproc(procname, params, kparams)
def execute(self, sql, params=None):
return self._execute_with_wrappers(…
sql, params, many=False, executor=self._execute
)
def executemany(self, sql, param_list):
return self._execute_with_wrappers(
sql, param_list, many=True, executor=self._executemany
Variable | Value |
---|---|
params | (36,) |
self | <django.db.backends.utils.CursorDebugWrapper object at 0x7f89e1b2ef80> |
sql | ('SELECT `ldo_album`.`id`, `ldo_album`.`name`, `ldo_album`.`description` FROM ' '`ldo_album` INNER JOIN `ldo_photoalbum` ON (`ldo_album`.`id` = ' '`ldo_photoalbum`.`albumId`) WHERE `ldo_photoalbum`.`photoId` = %s ORDER BY ' '`ldo_album`.`name` ASC') |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/db/backends/utils.py
, line 92, in _execute_with_wrappers
sql, param_list, many=True, executor=self._executemany
)
def _execute_with_wrappers(self, sql, params, many, executor):
context = {"connection": self.db, "cursor": self}
for wrapper in reversed(self.db.execute_wrappers):
executor = functools.partial(wrapper, executor)
return executor(sql, params, many, context)…
def _execute(self, sql, params, *ignored_wrapper_args):
# Raise a warning during app initialization (stored_app_configs is only
# ever set during testing).
if not apps.ready and not apps.stored_app_configs:
warnings.warn(self.APPS_NOT_READY_WARNING_MSG, category=RuntimeWarning)
Variable | Value |
---|---|
context | {'connection': <DatabaseWrapper vendor='mysql' alias='default'>, 'cursor': <django.db.backends.utils.CursorDebugWrapper object at 0x7f89e1b2ef80>} |
executor | <bound method CursorWrapper._execute of <django.db.backends.utils.CursorDebugWrapper object at 0x7f89e1b2ef80>> |
many | False |
params | (36,) |
self | <django.db.backends.utils.CursorDebugWrapper object at 0x7f89e1b2ef80> |
sql | ('SELECT `ldo_album`.`id`, `ldo_album`.`name`, `ldo_album`.`description` FROM ' '`ldo_album` INNER JOIN `ldo_photoalbum` ON (`ldo_album`.`id` = ' '`ldo_photoalbum`.`albumId`) WHERE `ldo_photoalbum`.`photoId` = %s ORDER BY ' '`ldo_album`.`name` ASC') |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/db/backends/utils.py
, line 100, in _execute
def _execute(self, sql, params, *ignored_wrapper_args):
# Raise a warning during app initialization (stored_app_configs is only
# ever set during testing).
if not apps.ready and not apps.stored_app_configs:
warnings.warn(self.APPS_NOT_READY_WARNING_MSG, category=RuntimeWarning)
self.db.validate_no_broken_transaction()
with self.db.wrap_database_errors:…
if params is None:
# params default might be backend specific.
return self.cursor.execute(sql)
else:
return self.cursor.execute(sql, params)
Variable | Value |
---|---|
ignored_wrapper_args | (False, {'connection': <DatabaseWrapper vendor='mysql' alias='default'>, 'cursor': <django.db.backends.utils.CursorDebugWrapper object at 0x7f89e1b2ef80>}) |
params | (36,) |
self | <django.db.backends.utils.CursorDebugWrapper object at 0x7f89e1b2ef80> |
sql | ('SELECT `ldo_album`.`id`, `ldo_album`.`name`, `ldo_album`.`description` FROM ' '`ldo_album` INNER JOIN `ldo_photoalbum` ON (`ldo_album`.`id` = ' '`ldo_photoalbum`.`albumId`) WHERE `ldo_photoalbum`.`photoId` = %s ORDER BY ' '`ldo_album`.`name` ASC') |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/db/utils.py
, line 91, in __exit__
db_exc_type = getattr(self.wrapper.Database, dj_exc_type.__name__)
if issubclass(exc_type, db_exc_type):
dj_exc_value = dj_exc_type(*exc_value.args)
# Only set the 'errors_occurred' flag for errors that may make
# the connection unusable.
if dj_exc_type not in (DataError, IntegrityError):
self.wrapper.errors_occurred = True
raise dj_exc_value.with_traceback(traceback) from exc_value…
def __call__(self, func):
# Note that we are intentionally not using @wraps here for performance
# reasons. Refs #21109.
def inner(*args, **kwargs):
with self:
Variable | Value |
---|---|
db_exc_type | <class 'MySQLdb.ProgrammingError'> |
dj_exc_type | <class 'django.db.utils.ProgrammingError'> |
dj_exc_value | ProgrammingError(1146, "Table 'ldo.ldo_photoalbum' doesn't exist") |
exc_type | <class 'MySQLdb.ProgrammingError'> |
exc_value | ProgrammingError(1146, "Table 'ldo.ldo_photoalbum' doesn't exist") |
self | <django.db.utils.DatabaseErrorWrapper object at 0x7f89e1bcfc10> |
traceback | <traceback object at 0x7f89e1a14f40> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/db/backends/utils.py
, line 105, in _execute
warnings.warn(self.APPS_NOT_READY_WARNING_MSG, category=RuntimeWarning)
self.db.validate_no_broken_transaction()
with self.db.wrap_database_errors:
if params is None:
# params default might be backend specific.
return self.cursor.execute(sql)
else:
return self.cursor.execute(sql, params)…
def _executemany(self, sql, param_list, *ignored_wrapper_args):
# Raise a warning during app initialization (stored_app_configs is only
# ever set during testing).
if not apps.ready and not apps.stored_app_configs:
warnings.warn(self.APPS_NOT_READY_WARNING_MSG, category=RuntimeWarning)
Variable | Value |
---|---|
ignored_wrapper_args | (False, {'connection': <DatabaseWrapper vendor='mysql' alias='default'>, 'cursor': <django.db.backends.utils.CursorDebugWrapper object at 0x7f89e1b2ef80>}) |
params | (36,) |
self | <django.db.backends.utils.CursorDebugWrapper object at 0x7f89e1b2ef80> |
sql | ('SELECT `ldo_album`.`id`, `ldo_album`.`name`, `ldo_album`.`description` FROM ' '`ldo_album` INNER JOIN `ldo_photoalbum` ON (`ldo_album`.`id` = ' '`ldo_photoalbum`.`albumId`) WHERE `ldo_photoalbum`.`photoId` = %s ORDER BY ' '`ldo_album`.`name` ASC') |
/var/www/linville.org/.venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py
, line 75, in execute
def __init__(self, cursor):
self.cursor = cursor
def execute(self, query, args=None):
try:
# args is None means no string interpolation
return self.cursor.execute(query, args)…
except Database.OperationalError as e:
# Map some error codes to IntegrityError, since they seem to be
# misclassified and Django would prefer the more logical place.
if e.args[0] in self.codes_for_integrityerror:
raise IntegrityError(*tuple(e.args))
raise
Variable | Value |
---|---|
args | (36,) |
query | ('SELECT `ldo_album`.`id`, `ldo_album`.`name`, `ldo_album`.`description` FROM ' '`ldo_album` INNER JOIN `ldo_photoalbum` ON (`ldo_album`.`id` = ' '`ldo_photoalbum`.`albumId`) WHERE `ldo_photoalbum`.`photoId` = %s ORDER BY ' '`ldo_album`.`name` ASC') |
self | <django.db.backends.mysql.base.CursorWrapper object at 0x7f89e1c662f0> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/MySQLdb/cursors.py
, line 179, in execute
Returns integer represents rows affected, if any
"""
self._discard()
mogrified_query = self._mogrify(query, args)
assert isinstance(mogrified_query, (bytes, bytearray))
res = self._query(mogrified_query)…
return res
def _mogrify(self, query, args=None):
"""Return query after binding args."""
db = self._get_db()
Variable | Value |
---|---|
args | (36,) |
mogrified_query | (b'SELECT `ldo_album`.`id`, `ldo_album`.`name`, `ldo_album`.`description` FROM ' b'`ldo_album` INNER JOIN `ldo_photoalbum` ON (`ldo_album`.`id` = `ldo_photoalb' b'um`.`albumId`) WHERE `ldo_photoalbum`.`photoId` = 36 ORDER BY `ldo_album`.`n' b'ame` ASC') |
query | ('SELECT `ldo_album`.`id`, `ldo_album`.`name`, `ldo_album`.`description` FROM ' '`ldo_album` INNER JOIN `ldo_photoalbum` ON (`ldo_album`.`id` = ' '`ldo_photoalbum`.`albumId`) WHERE `ldo_photoalbum`.`photoId` = %s ORDER BY ' '`ldo_album`.`name` ASC') |
self | <MySQLdb.cursors.Cursor object at 0x7f89e1c65e10> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/MySQLdb/cursors.py
, line 330, in _query
return args
def _query(self, q):
db = self._get_db()
self._result = None
self.rowcount = None
self.lastrowid = None
db.query(q)…
self._do_get_result(db)
self._post_get_result()
self._executed = q
return self.rowcount
def _fetch_row(self, size=1):
Variable | Value |
---|---|
db | <_mysql.connection open to 'localhost' at 0x563f78740ec0> |
q | (b'SELECT `ldo_album`.`id`, `ldo_album`.`name`, `ldo_album`.`description` FROM ' b'`ldo_album` INNER JOIN `ldo_photoalbum` ON (`ldo_album`.`id` = `ldo_photoalb' b'um`.`albumId`) WHERE `ldo_photoalbum`.`photoId` = 36 ORDER BY `ldo_album`.`n' b'ame` ASC') |
self | <MySQLdb.cursors.Cursor object at 0x7f89e1c65e10> |
/var/www/linville.org/.venv/lib/python3.10/site-packages/MySQLdb/connections.py
, line 261, in query
"""
return (cursorclass or self.cursorclass)(self)
def query(self, query):
# Since _mysql releases GIL while querying, we need immutable buffer.
if isinstance(query, bytearray):
query = bytes(query)
_mysql.connection.query(self, query)…
def _bytes_literal(self, bs):
assert isinstance(bs, (bytes, bytearray))
x = self.string_literal(bs) # x is escaped and quoted bytes
if self._binary_prefix:
return b"_binary" + x
Variable | Value |
---|---|
query | (b'SELECT `ldo_album`.`id`, `ldo_album`.`name`, `ldo_album`.`description` FROM ' b'`ldo_album` INNER JOIN `ldo_photoalbum` ON (`ldo_album`.`id` = `ldo_photoalb' b'um`.`albumId`) WHERE `ldo_photoalbum`.`photoId` = 36 ORDER BY `ldo_album`.`n' b'ame` ASC') |
self | <_mysql.connection open to 'localhost' at 0x563f78740ec0> |
AnonymousUser
No GET data
No POST data
No FILES data
No cookie data
Variable | Value |
---|---|
HTTP_ACCEPT | '*/*' |
HTTP_CONNECTION | 'close' |
HTTP_HOST | 'www.linville.org' |
HTTP_USER_AGENT | 'claudebot' |
HTTP_X_FORWARDED_FOR | '3.84.7.255' |
HTTP_X_FORWARDED_PROTO | 'https' |
PATH_INFO | '/photo/view/36/' |
QUERY_STRING | '' |
RAW_URI | '/photo/view/36/' |
REMOTE_ADDR | '' |
REQUEST_METHOD | 'GET' |
SCRIPT_NAME | '' |
SERVER_NAME | 'www.linville.org' |
SERVER_PORT | '443' |
SERVER_PROTOCOL | 'HTTP/1.0' |
SERVER_SOFTWARE | 'gunicorn/21.2.0' |
gunicorn.socket | <socket.socket fd=9, family=AddressFamily.AF_UNIX, type=SocketKind.SOCK_STREAM, proto=0, laddr=/run/gunicorn-linville.org/gunicorn.sock> |
wsgi.errors | <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f89e1c67f10> |
wsgi.file_wrapper | <class 'gunicorn.http.wsgi.FileWrapper'> |
wsgi.input | <gunicorn.http.body.Body object at 0x7f89e1c66b90> |
wsgi.input_terminated | True |
wsgi.multiprocess | True |
wsgi.multithread | False |
wsgi.run_once | False |
wsgi.url_scheme | 'https' |
wsgi.version | (1, 0) |
settings
Setting | Value |
---|---|
ABSOLUTE_URL_OVERRIDES | {} |
ADMINS | [('Aaron Linville', 'aaron@linville.org')] |
ALLOWED_HOSTS | ['.linville.org'] |
APPEND_SLASH | True |
AUTHENTICATION_BACKENDS | ['django.contrib.auth.backends.ModelBackend'] |
AUTH_PASSWORD_VALIDATORS | '********************' |
AUTH_USER_MODEL | 'auth.User' |
BASE_DIR | '/var/www/linville.org' |
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': 10, 'ENGINE': 'django.db.backends.mysql', 'HOST': 'localhost', 'NAME': 'ldo', 'OPTIONS': {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"}, 'PASSWORD': '********************', 'PORT': '3306', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': 'ldodb'}} |
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 | 'django.core.files.storage.FileSystemStorage' |
DEFAULT_FROM_EMAIL | 'webmaster@linville.org' |
DEFAULT_INDEX_TABLESPACE | '' |
DEFAULT_TABLESPACE | '' |
DISALLOWED_USER_AGENTS | [] |
EMAIL_BACKEND | 'django.core.mail.backends.smtp.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' |
GEOIP_PATH | '/var/www/linville.org/ldo/' |
IGNORABLE_404_URLS | [] |
INSTALLED_APPS | ('django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.sitemaps', 'django.contrib.staticfiles', 'ldo.apps.LDOConfig') |
INTERNAL_IPS | [] |
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 | '/' |
LOGIN_URL | '/' |
LOGOUT_REDIRECT_URL | None |
MANAGERS | [] |
MAPS_API_KEY | '********************' |
MEDIA_ROOT | '' |
MEDIA_URL | '/' |
MESSAGE_STORAGE | 'django.contrib.messages.storage.fallback.FallbackStorage' |
MIDDLEWARE | ['django.middleware.security.SecurityMiddleware', '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'] |
MIGRATION_MODULES | {} |
MONTH_DAY_FORMAT | 'F j' |
NUMBER_GROUPING | 0 |
PASSWORD_HASHERS | '********************' |
PASSWORD_RESET_TIMEOUT | '********************' |
PREPEND_WWW | False |
ROOT_URLCONF | 'ldo.urls' |
SECRET_KEY | '********************' |
SECRET_KEY_FALLBACKS | '********************' |
SECURE_BROWSER_XSS_FILTER | True |
SECURE_CONTENT_TYPE_NOSNIFF | True |
SECURE_CROSS_ORIGIN_OPENER_POLICY | 'same-origin' |
SECURE_FRAME_DENY | True |
SECURE_HSTS_INCLUDE_SUBDOMAINS | True |
SECURE_HSTS_PRELOAD | False |
SECURE_HSTS_SECONDS | 31536000 |
SECURE_PROXY_SSL_HEADER | None |
SECURE_REDIRECT_EXEMPT | [] |
SECURE_REFERRER_POLICY | 'same-origin' |
SECURE_SSL_HOST | None |
SECURE_SSL_REDIRECT | True |
SERVER_EMAIL | 'django@linville.org' |
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 | 'settings' |
SHORT_DATETIME_FORMAT | 'm/d/Y P' |
SHORT_DATE_FORMAT | 'm/d/Y' |
SIGNING_BACKEND | 'django.core.signing.TimestampSigner' |
SILENCED_SYSTEM_CHECKS | [] |
STATICFILES_DIRS | [] |
STATICFILES_FINDERS | ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder'] |
STATICFILES_STORAGE | 'django.contrib.staticfiles.storage.StaticFilesStorage' |
STATIC_ROOT | '/var/www/linville.org/public/static/' |
STATIC_URL | '/static/' |
STORAGES | {'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'}, 'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.StaticFilesStorage'}} |
TABLE_SYNC_DESTINATION | '' |
TABLE_SYNC_TOKEN | '********************' |
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'], 'libraries': {'staticfiles': 'django.templatetags.static'}}}] |
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 | 'America/New_York' |
USE_I18N | True |
USE_L10N | True |
USE_THOUSAND_SEPARATOR | False |
USE_TZ | True |
USE_X_FORWARDED_HOST | False |
USE_X_FORWARDED_PORT | False |
WSGI_APPLICATION | 'ldo.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.