relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^
Request Method: | GET |
---|---|
Request URL: | http://www.aaronhitchcock.com/ |
Django Version: | 4.1.1 |
Exception Type: | ProgrammingError |
Exception Value: | relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^ |
Exception Location: | /layers/google.python.pip/pip/lib/python3.11/site-packages/django/db/backends/utils.py, line 89, in _execute |
Raised during: | images.views.index_view |
Python Executable: | /layers/google.python.runtime/python/bin/python3 |
Python Version: | 3.11.8 |
Python Path: | ['/srv', '/workspace', '/layers/google.python.pip/pip/bin', '/layers/google.python.runtime/python/lib/python311.zip', '/layers/google.python.runtime/python/lib/python3.11', '/layers/google.python.runtime/python/lib/python3.11/lib-dynload', '/layers/google.python.pip/pip/lib/python3.11/site-packages', '/layers/google.python.runtime/python/lib/python3.11/site-packages'] |
Server time: | Tue, 19 Mar 2024 06:58:43 +0000 |
In template /layers/google.python.pip/pip/lib/python3.11/site-packages/django_tables2/templates/django_tables2/bootstrap4.html
, error at line 26
16 | {{ column.header }} |
---|---|
17 | {% endif %} |
18 | </th> |
19 | {% endfor %} |
20 | </tr> |
21 | </thead> |
22 | {% endif %} |
23 | {% endblock table.thead %} |
24 | {% block table.tbody %} |
25 | <tbody {{ table.attrs.tbody.as_html }}> |
26 | {% for row in table.paginated_rows %} |
27 | {% block table.tbody.row %} |
28 | <tr {{ row.attrs.as_html }}> |
29 | {% for column, cell in row.items %} |
30 | <td {{ column.attrs.td.as_html }}>{% if column.localize == None %}{{ cell }}{% else %}{% if column.localize %}{{ cell|localize }}{% else %}{{ cell|unlocalize }}{% endif %}{% endif %}</td> |
31 | {% endfor %} |
32 | </tr> |
33 | {% endblock table.tbody.row %} |
34 | {% empty %} |
35 | {% if table.empty_text %} |
36 | {% block table.tbody.empty_text %} |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/db/backends/utils.py
, line 89, in _execute
def _execute(self, sql, params, *ignored_wrapper_args):
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):
self.db.validate_no_broken_transaction()
with self.db.wrap_database_errors:
return self.cursor.executemany(sql, param_list)
Variable | Value |
---|---|
ignored_wrapper_args | (False, {'connection': <DatabaseWrapper vendor='postgresql' alias='default'>, 'cursor': <django.db.backends.postgresql.base.CursorDebugWrapper object at 0x3e7a1cf152d0>}) |
params | () |
self | <django.db.backends.postgresql.base.CursorDebugWrapper object at 0x3e7a1cf152d0> |
sql | ('SELECT "images_image"."id", "images_image"."title", "images_image"."file", ' '"images_image"."uploaded_at" FROM "images_image" ORDER BY ' '"images_image"."uploaded_at" DESC') |
/layers/google.python.pip/pip/lib/python3.11/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('relation "images_image" does not exist\nLINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im...\n ^\n') |
get_response | <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x3e7a1e348b10>> |
request | <WSGIRequest: GET '/'> |
/layers/google.python.pip/pip/lib/python3.11/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 asyncio.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 index_view at 0x3e7a1e369800> |
callback_args | () |
callback_kwargs | {} |
middleware_method | <bound method CsrfViewMiddleware.process_view of <CsrfViewMiddleware get_response=convert_exception_to_response.<locals>.inner>> |
request | <WSGIRequest: GET '/'> |
response | None |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x3e7a1e348b10> |
wrapped_callback | <function index_view at 0x3e7a1e369800> |
/srv/images/views.py
, line 19, in index_view
def index_view(request):
images = Image.objects.all()
image_table = ImageTable(images)
upload_form = UploadForm()
return render(request, 'images/index.html', {…
'images': images,
'image_table': image_table,
'upload_form': upload_form,
})
Variable | Value |
---|---|
image_table | <images.tables.ImageTable object at 0x3e7a1d9f6b90> |
images | Error in formatting: ProgrammingError: relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^ |
request | <WSGIRequest: GET '/'> |
upload_form | <UploadForm bound=False, valid=Unknown, fields=(title;file)> |
/layers/google.python.pip/pip/lib/python3.11/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 | Error in formatting: ProgrammingError: relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^ |
request | <WSGIRequest: GET '/'> |
status | None |
template_name | 'images/index.html' |
using | None |
/layers/google.python.pip/pip/lib/python3.11/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 | Error in formatting: ProgrammingError: relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^ |
request | <WSGIRequest: GET '/'> |
template | <django.template.backends.django.Template object at 0x3e7a1d96b790> |
template_name | 'images/index.html' |
using | None |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/backends/django.py
, line 62, 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 | Error in formatting: ProgrammingError: relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^ |
request | <WSGIRequest: GET '/'> |
self | <django.template.backends.django.Template object at 0x3e7a1d96b790> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 175, 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 | Error in formatting: ProgrammingError: relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^ |
self | <Template template_string="{% load render_table..."> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 167, 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 | Error in formatting: ProgrammingError: relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^ |
self | <Template template_string="{% load render_table..."> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 1005, 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 | Error in formatting: ProgrammingError: relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^ |
self | [<django.template.defaulttags.LoadNode object at 0x3e7a1d969990>, <TextNode: '\n'>, <django.template.defaulttags.LoadNode object at 0x3e7a1d9698d0>, <TextNode: '\n\n<!DOCTYPE html>\n<html l'>, <IfNode>, <TextNode: '\n '>, <URLNode view_name='"images-upload"' args=[] kwargs={} as=None>, <TextNode: '" enctype="multipart/form'>, <django.template.defaulttags.CsrfTokenNode object at 0x3e7a1d969f50>, <TextNode: '\n '>, <Variable Node: upload_form|crispy>, <TextNode: '\n '>] |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 1005, 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 0x3e7a1d9f0be0> |
context | Error in formatting: ProgrammingError: relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^ |
node | <IfNode> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 966, 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 | Error in formatting: ProgrammingError: relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^ |
self | <IfNode> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/defaulttags.py
, line 322, in render
match = condition.eval(context)
except VariableDoesNotExist:
match = None
else: # else clause
match = True
if match:
return nodelist.render(context)…
return ""
class LoremNode(Node):
def __init__(self, count, method, common):
Variable | Value |
---|---|
condition | None |
context | Error in formatting: ProgrammingError: relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^ |
match | True |
nodelist | [<TextNode: '\n '>, <django_tables2.templatetags.django_tables2.RenderTableNode object at 0x3e7a1d969e10>, <TextNode: '\n '>] |
self | <IfNode> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 1005, 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 | Error in formatting: ProgrammingError: relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^ |
self | [<TextNode: '\n '>, <django_tables2.templatetags.django_tables2.RenderTableNode object at 0x3e7a1d969e10>, <TextNode: '\n '>] |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 1005, 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 0x3e7a1d9f0640> |
context | Error in formatting: ProgrammingError: relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^ |
node | <django_tables2.templatetags.django_tables2.RenderTableNode object at 0x3e7a1d969e10> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 966, 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 | Error in formatting: ProgrammingError: relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^ |
self | <django_tables2.templatetags.django_tables2.RenderTableNode object at 0x3e7a1d969e10> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django_tables2/templatetags/django_tables2.py
, line 167, in render
# TemplateColumn benefits from being able to use the context
# that the table is rendered in. The current way this is
# achieved is to temporarily attach the context to the table,
# which TemplateColumn then looks for and uses.
table.context = context
table.before_render(request)
return template.render(context={"table": table}, request=request)…
finally:
del table.context
@register.tag
def render_table(parser, token):
Variable | Value |
---|---|
context | Error in formatting: ProgrammingError: relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^ |
request | <WSGIRequest: GET '/'> |
self | <django_tables2.templatetags.django_tables2.RenderTableNode object at 0x3e7a1d969e10> |
table | <images.tables.ImageTable object at 0x3e7a1d9f6b90> |
template | <django.template.backends.django.Template object at 0x3e7a1d9eeb10> |
template_name | 'django_tables2/bootstrap4.html' |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/backends/django.py
, line 62, 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}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
request | <WSGIRequest: GET '/'> |
self | <django.template.backends.django.Template object at 0x3e7a1d9eeb10> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 175, 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}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
self | <Template template_string="{% load django_table..."> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 167, 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}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
self | <Template template_string="{% load django_table..."> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 1005, 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}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
self | [<django.template.defaulttags.LoadNode object at 0x3e7a1d99c710>, <TextNode: '\n'>, <django.template.defaulttags.LoadNode object at 0x3e7a1d99c210>, <TextNode: '\n'>, <Block Node: table-wrapper. Contents: [<TextNode: '\n<div class="table-contai'>, <Block Node: table. Contents: [<TextNode: '\n <table '>, <django.template.library.SimpleNode object at 0x3e7a1d9a67d0>, <TextNode: '>\n '>, <Block Node: table.thead. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n '>, <Block Node: table.tbody. Contents: [<TextNode: '\n <tbody '>, <Variable Node: table.attrs.tbody.as_html>, <TextNode: '>\n '>, <ForNode: for row in table.paginated_rows, tail_len: 3>, <TextNode: '\n </tbody>'>]>, <TextNode: '\n '>, <Block Node: table.tfoot. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n </table>\n '>]>, <TextNode: '\n\n '>, <Block Node: pagination. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n</div>\n'>]>, <TextNode: '\n'>] |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 1005, 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 0x3e7a1d9f0520> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
node | <Block Node: table-wrapper. Contents: [<TextNode: '\n<div class="table-contai'>, <Block Node: table. Contents: [<TextNode: '\n <table '>, <django.template.library.SimpleNode object at 0x3e7a1d9a67d0>, <TextNode: '>\n '>, <Block Node: table.thead. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n '>, <Block Node: table.tbody. Contents: [<TextNode: '\n <tbody '>, <Variable Node: table.attrs.tbody.as_html>, <TextNode: '>\n '>, <ForNode: for row in table.paginated_rows, tail_len: 3>, <TextNode: '\n </tbody>'>]>, <TextNode: '\n '>, <Block Node: table.tfoot. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n </table>\n '>]>, <TextNode: '\n\n '>, <Block Node: pagination. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n</div>\n'>]> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 966, 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}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
self | <Block Node: table-wrapper. Contents: [<TextNode: '\n<div class="table-contai'>, <Block Node: table. Contents: [<TextNode: '\n <table '>, <django.template.library.SimpleNode object at 0x3e7a1d9a67d0>, <TextNode: '>\n '>, <Block Node: table.thead. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n '>, <Block Node: table.tbody. Contents: [<TextNode: '\n <tbody '>, <Variable Node: table.attrs.tbody.as_html>, <TextNode: '>\n '>, <ForNode: for row in table.paginated_rows, tail_len: 3>, <TextNode: '\n </tbody>'>]>, <TextNode: '\n '>, <Block Node: table.tfoot. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n </table>\n '>]>, <TextNode: '\n\n '>, <Block Node: pagination. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n</div>\n'>]> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/loader_tags.py
, line 54, in render
return "<Block Node: %s. Contents: %r>" % (self.name, self.nodelist)
def render(self, context):
block_context = context.render_context.get(BLOCK_CONTEXT_KEY)
with context.push():
if block_context is None:
context["block"] = self
result = self.nodelist.render(context)…
else:
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)
Variable | Value |
---|---|
block_context | None |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
self | <Block Node: table-wrapper. Contents: [<TextNode: '\n<div class="table-contai'>, <Block Node: table. Contents: [<TextNode: '\n <table '>, <django.template.library.SimpleNode object at 0x3e7a1d9a67d0>, <TextNode: '>\n '>, <Block Node: table.thead. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n '>, <Block Node: table.tbody. Contents: [<TextNode: '\n <tbody '>, <Variable Node: table.attrs.tbody.as_html>, <TextNode: '>\n '>, <ForNode: for row in table.paginated_rows, tail_len: 3>, <TextNode: '\n </tbody>'>]>, <TextNode: '\n '>, <Block Node: table.tfoot. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n </table>\n '>]>, <TextNode: '\n\n '>, <Block Node: pagination. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n</div>\n'>]> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 1005, 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}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
self | [<TextNode: '\n<div class="table-contai'>, <Block Node: table. Contents: [<TextNode: '\n <table '>, <django.template.library.SimpleNode object at 0x3e7a1d9a67d0>, <TextNode: '>\n '>, <Block Node: table.thead. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n '>, <Block Node: table.tbody. Contents: [<TextNode: '\n <tbody '>, <Variable Node: table.attrs.tbody.as_html>, <TextNode: '>\n '>, <ForNode: for row in table.paginated_rows, tail_len: 3>, <TextNode: '\n </tbody>'>]>, <TextNode: '\n '>, <Block Node: table.tfoot. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n </table>\n '>]>, <TextNode: '\n\n '>, <Block Node: pagination. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n</div>\n'>] |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 1005, 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 0x3e7a1d9f0d30> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
node | <Block Node: table. Contents: [<TextNode: '\n <table '>, <django.template.library.SimpleNode object at 0x3e7a1d9a67d0>, <TextNode: '>\n '>, <Block Node: table.thead. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n '>, <Block Node: table.tbody. Contents: [<TextNode: '\n <tbody '>, <Variable Node: table.attrs.tbody.as_html>, <TextNode: '>\n '>, <ForNode: for row in table.paginated_rows, tail_len: 3>, <TextNode: '\n </tbody>'>]>, <TextNode: '\n '>, <Block Node: table.tfoot. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n </table>\n '>]> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 966, 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}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
self | <Block Node: table. Contents: [<TextNode: '\n <table '>, <django.template.library.SimpleNode object at 0x3e7a1d9a67d0>, <TextNode: '>\n '>, <Block Node: table.thead. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n '>, <Block Node: table.tbody. Contents: [<TextNode: '\n <tbody '>, <Variable Node: table.attrs.tbody.as_html>, <TextNode: '>\n '>, <ForNode: for row in table.paginated_rows, tail_len: 3>, <TextNode: '\n </tbody>'>]>, <TextNode: '\n '>, <Block Node: table.tfoot. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n </table>\n '>]> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/loader_tags.py
, line 54, in render
return "<Block Node: %s. Contents: %r>" % (self.name, self.nodelist)
def render(self, context):
block_context = context.render_context.get(BLOCK_CONTEXT_KEY)
with context.push():
if block_context is None:
context["block"] = self
result = self.nodelist.render(context)…
else:
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)
Variable | Value |
---|---|
block_context | None |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
self | <Block Node: table. Contents: [<TextNode: '\n <table '>, <django.template.library.SimpleNode object at 0x3e7a1d9a67d0>, <TextNode: '>\n '>, <Block Node: table.thead. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n '>, <Block Node: table.tbody. Contents: [<TextNode: '\n <tbody '>, <Variable Node: table.attrs.tbody.as_html>, <TextNode: '>\n '>, <ForNode: for row in table.paginated_rows, tail_len: 3>, <TextNode: '\n </tbody>'>]>, <TextNode: '\n '>, <Block Node: table.tfoot. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n </table>\n '>]> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 1005, 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}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
self | [<TextNode: '\n <table '>, <django.template.library.SimpleNode object at 0x3e7a1d9a67d0>, <TextNode: '>\n '>, <Block Node: table.thead. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n '>, <Block Node: table.tbody. Contents: [<TextNode: '\n <tbody '>, <Variable Node: table.attrs.tbody.as_html>, <TextNode: '>\n '>, <ForNode: for row in table.paginated_rows, tail_len: 3>, <TextNode: '\n </tbody>'>]>, <TextNode: '\n '>, <Block Node: table.tfoot. Contents: [<TextNode: '\n '>, <IfNode>, <TextNode: '\n '>]>, <TextNode: '\n </table>\n '>] |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 1005, 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 0x3e7a1d9f0e20> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
node | <Block Node: table.tbody. Contents: [<TextNode: '\n <tbody '>, <Variable Node: table.attrs.tbody.as_html>, <TextNode: '>\n '>, <ForNode: for row in table.paginated_rows, tail_len: 3>, <TextNode: '\n </tbody>'>]> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 966, 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}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
self | <Block Node: table.tbody. Contents: [<TextNode: '\n <tbody '>, <Variable Node: table.attrs.tbody.as_html>, <TextNode: '>\n '>, <ForNode: for row in table.paginated_rows, tail_len: 3>, <TextNode: '\n </tbody>'>]> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/loader_tags.py
, line 54, in render
return "<Block Node: %s. Contents: %r>" % (self.name, self.nodelist)
def render(self, context):
block_context = context.render_context.get(BLOCK_CONTEXT_KEY)
with context.push():
if block_context is None:
context["block"] = self
result = self.nodelist.render(context)…
else:
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)
Variable | Value |
---|---|
block_context | None |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
self | <Block Node: table.tbody. Contents: [<TextNode: '\n <tbody '>, <Variable Node: table.attrs.tbody.as_html>, <TextNode: '>\n '>, <ForNode: for row in table.paginated_rows, tail_len: 3>, <TextNode: '\n </tbody>'>]> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 1005, 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}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
self | [<TextNode: '\n <tbody '>, <Variable Node: table.attrs.tbody.as_html>, <TextNode: '>\n '>, <ForNode: for row in table.paginated_rows, tail_len: 3>, <TextNode: '\n </tbody>'>] |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 1005, 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 0x3e7a1d9f0d90> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
node | <ForNode: for row in table.paginated_rows, tail_len: 3> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/base.py
, line 966, 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}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
self | <ForNode: for row in table.paginated_rows, tail_len: 3> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/template/defaulttags.py
, line 194, in render
parentloop = {}
with context.push():
values = self.sequence.resolve(context, ignore_failures=True)
if values is None:
values = []
if not hasattr(values, "__len__"):
values = list(values)
len_values = len(values)…
if len_values < 1:
return self.nodelist_empty.render(context)
nodelist = []
if self.is_reversed:
values = reversed(values)
num_loopvars = len(self.loopvars)
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'table': <images.tables.ImageTable object at 0x3e7a1d9f6b90>}] |
parentloop | {} |
self | <ForNode: for row in table.paginated_rows, tail_len: 3> |
values | <django_tables2.rows.BoundRows object at 0x3e7a1cf668d0> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django_tables2/rows.py
, line 325, in __len__
yield BoundRow(record, table=self.table)
# Bottom pinned rows
for pinned_record in self.generator_pinned_row(self.pinned_data.get("bottom")):
yield pinned_record
def __len__(self):
length = len(self.data)…
pinned_top = self.pinned_data.get("top")
pinned_bottom = self.pinned_data.get("bottom")
length += 0 if pinned_top is None else len(pinned_top)
length += 0 if pinned_bottom is None else len(pinned_bottom)
return length
Variable | Value |
---|---|
self | <django_tables2.rows.BoundRows object at 0x3e7a1cf668d0> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django_tables2/data.py
, line 156, in __len__
"""Cached data length"""
if not hasattr(self, "_length") or self._length is None:
if hasattr(self.table, "paginator"):
# for paginated tables, use QuerySet.count() as we are interested in total number of records.
self._length = self.data.count()
else:
# for non-paginated tables, use the length of the QuerySet
self._length = len(self.data)…
return self._length
def set_table(self, table):
super().set_table(table)
if self.model and getattr(table._meta, "model", None) and self.model != table._meta.model:
Variable | Value |
---|---|
self | <django_tables2.data.TableQuerysetData object at 0x3e7a1d9eac50> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/db/models/query.py
, line 376, in __len__
def __repr__(self):
data = list(self[: REPR_OUTPUT_SIZE + 1])
if len(data) > REPR_OUTPUT_SIZE:
data[-1] = "...(remaining elements truncated)..."
return "<%s %r>" % (self.__class__.__name__, data)
def __len__(self):
self._fetch_all()…
return len(self._result_cache)
def __iter__(self):
"""
The queryset iterator protocol uses three nested iterators in the
default case:
Variable | Value |
---|---|
self | Error in formatting: ProgrammingError: relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^ |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/db/models/query.py
, line 1866, 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: relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^ |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/db/models/query.py
, line 87, 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=Image connection=<DatabaseWrapper vendor='postgresql' alias='default'> using='default'> |
db | 'default' |
queryset | Error in formatting: ProgrammingError: relation "images_image" does not exist LINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im... ^ |
self | <django.db.models.query.ModelIterable object at 0x3e7a1cf154d0> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/db/models/sql/compiler.py
, line 1395, 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.postgresql.base.CursorDebugWrapper object at 0x3e7a1cf152d0> |
params | () |
result_type | 'multi' |
self | <SQLCompiler model=Image connection=<DatabaseWrapper vendor='postgresql' alias='default'> using='default'> |
sql | ('SELECT "images_image"."id", "images_image"."title", "images_image"."file", ' '"images_image"."uploaded_at" FROM "images_image" ORDER BY ' '"images_image"."uploaded_at" DESC') |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/db/backends/utils.py
, line 103, 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 | () |
self | <django.db.backends.postgresql.base.CursorDebugWrapper object at 0x3e7a1cf152d0> |
sql | ('SELECT "images_image"."id", "images_image"."title", "images_image"."file", ' '"images_image"."uploaded_at" FROM "images_image" ORDER BY ' '"images_image"."uploaded_at" DESC') |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/db/backends/utils.py
, line 67, 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 | () |
self | <django.db.backends.postgresql.base.CursorDebugWrapper object at 0x3e7a1cf152d0> |
sql | ('SELECT "images_image"."id", "images_image"."title", "images_image"."file", ' '"images_image"."uploaded_at" FROM "images_image" ORDER BY ' '"images_image"."uploaded_at" DESC') |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/db/backends/utils.py
, line 80, 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):
self.db.validate_no_broken_transaction()
with self.db.wrap_database_errors:
if params is None:
# params default might be backend specific.
Variable | Value |
---|---|
context | {'connection': <DatabaseWrapper vendor='postgresql' alias='default'>, 'cursor': <django.db.backends.postgresql.base.CursorDebugWrapper object at 0x3e7a1cf152d0>} |
executor | <bound method CursorWrapper._execute of <django.db.backends.postgresql.base.CursorDebugWrapper object at 0x3e7a1cf152d0>> |
many | False |
params | () |
self | <django.db.backends.postgresql.base.CursorDebugWrapper object at 0x3e7a1cf152d0> |
sql | ('SELECT "images_image"."id", "images_image"."title", "images_image"."file", ' '"images_image"."uploaded_at" FROM "images_image" ORDER BY ' '"images_image"."uploaded_at" DESC') |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/db/backends/utils.py
, line 84, in _execute
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):
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='postgresql' alias='default'>, 'cursor': <django.db.backends.postgresql.base.CursorDebugWrapper object at 0x3e7a1cf152d0>}) |
params | () |
self | <django.db.backends.postgresql.base.CursorDebugWrapper object at 0x3e7a1cf152d0> |
sql | ('SELECT "images_image"."id", "images_image"."title", "images_image"."file", ' '"images_image"."uploaded_at" FROM "images_image" ORDER BY ' '"images_image"."uploaded_at" DESC') |
/layers/google.python.pip/pip/lib/python3.11/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 'psycopg2.ProgrammingError'> |
dj_exc_type | <class 'django.db.utils.ProgrammingError'> |
dj_exc_value | ProgrammingError('relation "images_image" does not exist\nLINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im...\n ^\n') |
exc_type | <class 'psycopg2.errors.UndefinedTable'> |
exc_value | UndefinedTable('relation "images_image" does not exist\nLINE 1: ..._image"."file", "images_image"."uploaded_at" FROM "images_im...\n ^\n') |
self | <django.db.utils.DatabaseErrorWrapper object at 0x3e7a1d97fc10> |
traceback | <traceback object at 0x3e7a1cf16000> |
/layers/google.python.pip/pip/lib/python3.11/site-packages/django/db/backends/utils.py
, line 89, in _execute
def _execute(self, sql, params, *ignored_wrapper_args):
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):
self.db.validate_no_broken_transaction()
with self.db.wrap_database_errors:
return self.cursor.executemany(sql, param_list)
Variable | Value |
---|---|
ignored_wrapper_args | (False, {'connection': <DatabaseWrapper vendor='postgresql' alias='default'>, 'cursor': <django.db.backends.postgresql.base.CursorDebugWrapper object at 0x3e7a1cf152d0>}) |
params | () |
self | <django.db.backends.postgresql.base.CursorDebugWrapper object at 0x3e7a1cf152d0> |
sql | ('SELECT "images_image"."id", "images_image"."title", "images_image"."file", ' '"images_image"."uploaded_at" FROM "images_image" ORDER BY ' '"images_image"."uploaded_at" DESC') |
AnonymousUser
No GET data
No POST data
No FILES data
No cookie data
Variable | Value |
---|---|
HTTP_ACCEPT | '*/*' |
HTTP_FORWARDED | 'for="3.95.233.107";proto=http' |
HTTP_HOST | 'www.aaronhitchcock.com' |
HTTP_TRACEPARENT | '00-4e1d15761bdbebff1394516f4aa1a749-32da0cc6d655293b-00' |
HTTP_USER_AGENT | 'claudebot' |
HTTP_X_APPENGINE_API_TICKET | '********************' |
HTTP_X_APPENGINE_CITY | 'ashburn' |
HTTP_X_APPENGINE_CITYLATLONG | '39.043757,-77.487442' |
HTTP_X_APPENGINE_COUNTRY | 'US' |
HTTP_X_APPENGINE_DEFAULT_NAMESPACE | 'gmail.com' |
HTTP_X_APPENGINE_DEFAULT_VERSION_HOSTNAME | 'clubaaron.ue.r.appspot.com' |
HTTP_X_APPENGINE_HTTPS | 'off' |
HTTP_X_APPENGINE_REGION | 'va' |
HTTP_X_APPENGINE_REQUEST_LOG_ID | '65f937a200ff0731fce1cbb37e0001707e636c75626161726f6e0001323032333037323474313532343130000100' |
HTTP_X_APPENGINE_TIMEOUT_MS | '599999' |
HTTP_X_APPENGINE_USER_IP | '3.95.233.107' |
HTTP_X_CLOUD_TRACE_CONTEXT | '4e1d15761bdbebff1394516f4aa1a749/3664255294958283067' |
HTTP_X_FORWARDED_FOR | '3.95.233.107, 169.254.1.1' |
HTTP_X_FORWARDED_PROTO | 'http' |
HTTP_X_GOOGLE_APPS_METADATA | 'domain=gmail.com,host=www.aaronhitchcock.com' |
PATH_INFO | '/' |
QUERY_STRING | '' |
RAW_URI | '/' |
REMOTE_ADDR | '127.0.0.1' |
REMOTE_PORT | '52897' |
REQUEST_METHOD | 'GET' |
SCRIPT_NAME | '' |
SERVER_NAME | '0.0.0.0' |
SERVER_PORT | '8081' |
SERVER_PROTOCOL | 'HTTP/1.1' |
SERVER_SOFTWARE | 'gunicorn/20.1.0' |
gunicorn.socket | <socket.socket fd=12, family=2, type=1, proto=0, laddr=('127.0.0.1', 8081), raddr=('127.0.0.1', 52897)> |
wsgi.errors | <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x3e7a1e35a800> |
wsgi.file_wrapper | <class 'gunicorn.http.wsgi.FileWrapper'> |
wsgi.input | <gunicorn.http.body.Body object at 0x3e7a1d9ee250> |
wsgi.input_terminated | True |
wsgi.multiprocess | True |
wsgi.multithread | True |
wsgi.run_once | False |
wsgi.url_scheme | 'http' |
wsgi.version | (1, 0) |
core.settings
Setting | Value |
---|---|
ABSOLUTE_URL_OVERRIDES | {} |
ADMINS | [] |
ALLOWED_HOSTS | ['*'] |
APPEND_SLASH | True |
APPENGINE_URL | None |
AUTHENTICATION_BACKENDS | ['django.contrib.auth.backends.ModelBackend'] |
AUTH_PASSWORD_VALIDATORS | '********************' |
AUTH_USER_MODEL | 'auth.User' |
BASE_DIR | PosixPath('/workspace') |
CACHES | {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}} |
CACHE_MIDDLEWARE_ALIAS | 'default' |
CACHE_MIDDLEWARE_KEY_PREFIX | '********************' |
CACHE_MIDDLEWARE_SECONDS | 600 |
CRISPY_TEMPLATE_PACK | 'bootstrap4' |
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 | [] |
CSRF_USE_SESSIONS | False |
DATABASES | {'default': {'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_HEALTH_CHECKS': False, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.postgresql', 'HOST': '/cloudsql/clubaaron:us-east1:budgie-clubaaron', 'NAME': 'blog_dev', 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': '', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': 'clubaaron'}} |
DATABASE_ROUTERS | [] |
DATA_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
DATA_UPLOAD_MAX_NUMBER_FIELDS | 1000 |
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.BigAutoField' |
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@localhost' |
DEFAULT_INDEX_TABLESPACE | '' |
DEFAULT_TABLESPACE | '' |
DISALLOWED_USER_AGENTS | [] |
DJANGO_TABLES2_TEMPLATE | 'django_tables2/bootstrap4.html' |
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 |
FORM_RENDERER | 'django.forms.renderers.DjangoTemplates' |
IGNORABLE_404_URLS | [] |
INSTALLED_APPS | ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'images.apps.ImagesConfig', 'django_tables2', 'crispy_forms'] |
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'), ('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 | {} |
LOGGING_CONFIG | 'logging.config.dictConfig' |
LOGIN_REDIRECT_URL | '/accounts/profile/' |
LOGIN_URL | '/accounts/login/' |
LOGOUT_REDIRECT_URL | None |
MANAGERS | [] |
MEDIA_ROOT | PosixPath('/workspace/mediafiles') |
MEDIA_URL | '/media/' |
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 | 'core.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 | 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 | 'core.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 | PosixPath('/workspace/staticfiles') |
STATIC_URL | '/static/' |
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_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 |
WSGI_APPLICATION | 'core.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.