unsupported operand type(s) for /: 'NoneType' and 'int'
Request Method: | GET |
---|---|
Request URL: | http://cms.dtp-stat.ru/opendata/ |
Django Version: | 3.1.14 |
Exception Type: | TypeError |
Exception Value: | unsupported operand type(s) for /: 'NoneType' and 'int' |
Exception Location: | /code/application/models.py, line 76, in mb_file_size |
Python Executable: | /usr/local/bin/python |
Python Version: | 3.8.11 |
Python Path: | ['/code', '/usr/local/lib/python38.zip', '/usr/local/lib/python3.8', '/usr/local/lib/python3.8/lib-dynload', '/usr/local/lib/python3.8/site-packages', '/usr/local/lib/python3.8/site-packages/setuptools/_vendor'] |
Server time: | Fri, 06 Jun 2025 18:56:54 +0000 |
In template /code/templates/base.html
, error at line 0
1 | {% load static %} |
---|---|
2 | |
3 | <!DOCTYPE html> |
4 | <html lang="ru"> |
5 | <head> |
6 | <meta charset="UTF-8"> |
7 | <meta name="viewport" content="width=device-width, initial-scale=1"> |
8 | <link rel="shortcut icon" href="{% static 'media/logo.ico' %}" type="image/x-icon"> |
9 | |
10 | <!-- Yandex.Metrika counter --> |
/usr/local/lib/python3.8/site-packages/django/core/handlers/exception.py
, line 47, in inner
response = await sync_to_async(response_for_exception, thread_sensitive=False)(request, exc)
return response
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 | TypeError("unsupported operand type(s) for /: 'NoneType' and 'int'") |
get_response | <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x78aa17836d60>> |
request | <WSGIRequest: GET '/opendata/'> |
/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py
, line 181, 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 opendata at 0x78a9f02c68b0> |
callback_args | () |
callback_kwargs | {} |
middleware_method | <bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x78a9ef9d7df0>> |
request | <WSGIRequest: GET '/opendata/'> |
response | None |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x78aa17836d60> |
wrapped_callback | <function opendata at 0x78a9f02c68b0> |
/code/application/views.py
, line 69, in opendata
start_date = datetime.datetime(2015, 1, 1)
try:
text = get_object_or_404(models.Page, slug="opendata").text
except:
text = None
return render(request, "opendata.html", context={…
'opendata': opendata,
'start_date': start_date,
'text': text
})
Variable | Value |
---|---|
opendata | <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']> |
request | <WSGIRequest: GET '/opendata/'> |
start_date | datetime.datetime(2015, 1, 1, 0, 0) |
text | ('<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в ' 'исследованиях и анализировать с помощью своих ' 'инструментов. Первоисточник данных – официальный сайт ГИБДД, но ' 'эти данные приведены с изменениями (например, корректировки ' 'координат).</p>') |
/usr/local/lib/python3.8/site-packages/django/shortcuts.py
, line 19, in render
def render(request, template_name, context=None, content_type=None, status=None, using=None):
"""
Return a 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 | {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в ' 'исследованиях и анализировать с помощью своих ' 'инструментов. Первоисточник данных – официальный сайт ' 'ГИБДД, но эти данные приведены с изменениями (например, ' 'корректировки координат).</p>'} |
request | <WSGIRequest: GET '/opendata/'> |
status | None |
template_name | 'opendata.html' |
using | None |
/usr/local/lib/python3.8/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 | {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в ' 'исследованиях и анализировать с помощью своих ' 'инструментов. Первоисточник данных – официальный сайт ' 'ГИБДД, но эти данные приведены с изменениями (например, ' 'корректировки координат).</p>'} |
request | <WSGIRequest: GET '/opendata/'> |
template | <django.template.backends.django.Template object at 0x78a9e64d5130> |
template_name | 'opendata.html' |
using | None |
/usr/local/lib/python3.8/site-packages/django/template/backends/django.py
, line 61, in render
@property
def origin(self):
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}, {}, {}, {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в исследованиях и анализировать с помощью своих инструментов. Первоисточник данных – официальный сайт ГИБДД, но эти данные приведены с изменениями (например, корректировки координат).</p>'}] |
request | <WSGIRequest: GET '/opendata/'> |
self | <django.template.backends.django.Template object at 0x78a9e64d5130> |
/usr/local/lib/python3.8/site-packages/django/template/base.py
, line 170, 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}, {}, {}, {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в исследованиях и анализировать с помощью своих инструментов. Первоисточник данных – официальный сайт ГИБДД, но эти данные приведены с изменениями (например, корректировки координат).</p>'}] |
self | <django.template.base.Template object at 0x78a9d8126bb0> |
/usr/local/lib/python3.8/site-packages/django/template/base.py
, line 162, in _render
self.nodelist = self.compile_nodelist()
def __iter__(self):
for node in self.nodelist:
yield from node
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}, {}, {}, {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в исследованиях и анализировать с помощью своих инструментов. Первоисточник данных – официальный сайт ГИБДД, но эти данные приведены с изменениями (например, корректировки координат).</p>'}] |
self | <django.template.base.Template object at 0x78a9d8126bb0> |
/usr/local/lib/python3.8/site-packages/django/template/base.py
, line 938, in render
# extend_nodelist().
contains_nontext = False
def render(self, context):
bits = []
for node in self:
if isinstance(node, Node):
bit = node.render_annotated(context)…
else:
bit = node
bits.append(str(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
Variable | Value |
---|---|
bits | [] |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в исследованиях и анализировать с помощью своих инструментов. Первоисточник данных – официальный сайт ГИБДД, но эти данные приведены с изменениями (например, корректировки координат).</p>'}] |
node | <ExtendsNode: extends "base.html"> |
self | [<ExtendsNode: extends "base.html">] |
/usr/local/lib/python3.8/site-packages/django/template/base.py
, line 905, 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 and not hasattr(e, 'template_debug'):
e.template_debug = context.render_context.template.get_exception_info(e, self.token)
raise
def __iter__(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в исследованиях и анализировать с помощью своих инструментов. Первоисточник данных – официальный сайт ГИБДД, но эти данные приведены с изменениями (например, корректировки координат).</p>'}] |
self | <ExtendsNode: extends "base.html"> |
/usr/local/lib/python3.8/site-packages/django/template/loader_tags.py
, line 150, in render
compiled_parent.nodelist.get_nodes_by_type(BlockNode)}
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__(self, template, *args, extra_context=None, isolated_context=False, **kwargs):
Variable | Value |
---|---|
block_context | <django.template.loader_tags.BlockContext object at 0x78a9d14b3f70> |
blocks | {'content': <Block Node: content. Contents: [<TextNode: '\n'>]>, 'extra-head': <Block Node: extra-head. Contents: [<TextNode: '\n '>]>, 'meta-tags': <Block Node: meta-tags. Contents: [<TextNode: '\n <meta property="'>]>, 'page-scripts': <Block Node: page-scripts. Contents: [<TextNode: '\n'>]>} |
compiled_parent | <django.template.base.Template object at 0x78a9e6a9ee50> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в исследованиях и анализировать с помощью своих инструментов. Первоисточник данных – официальный сайт ГИБДД, но эти данные приведены с изменениями (например, корректировки координат).</p>'}] |
node | <django.template.defaulttags.LoadNode object at 0x78a9e4de0d00> |
self | <ExtendsNode: extends "base.html"> |
/usr/local/lib/python3.8/site-packages/django/template/base.py
, line 162, in _render
self.nodelist = self.compile_nodelist()
def __iter__(self):
for node in self.nodelist:
yield from node
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}, {}, {}, {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в исследованиях и анализировать с помощью своих инструментов. Первоисточник данных – официальный сайт ГИБДД, но эти данные приведены с изменениями (например, корректировки координат).</p>'}] |
self | <django.template.base.Template object at 0x78a9e6a9ee50> |
/usr/local/lib/python3.8/site-packages/django/template/base.py
, line 938, in render
# extend_nodelist().
contains_nontext = False
def render(self, context):
bits = []
for node in self:
if isinstance(node, Node):
bit = node.render_annotated(context)…
else:
bit = node
bits.append(str(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
Variable | Value |
---|---|
bit | '\n\n' |
bits | ['', '\n' '\n' '<!DOCTYPE html>\n' '<html lang="ru">\n' '<head>\n' ' <meta charset="UTF-8">\n' ' <meta name="viewport" content="width=device-width, initial-scale=1">\n' ' <link rel="shortcut icon" href="', '/static/media/logo.ico', '" type="image/x-icon">\n' '\n' ' <!-- Yandex.Metrika counter -->\n' ' <script type="text/javascript" >\n' ' ' '(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};\n' ' m[i].l=1*new ' 'Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})\n' ' (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", ' '"ym");\n' '\n' ' ym(49130284, "init", {\n' ' clickmap:true,\n' ' trackLinks:true,\n' ' accurateTrackBounce:true,\n' ' webvisor:true\n' ' });\n' ' </script>\n' ' <noscript><div><img src="https://mc.yandex.ru/watch/49130284" ' 'style="position:absolute; left:-9999px;" alt="" /></div></noscript>\n' ' <!-- /Yandex.Metrika counter -->\n' '\n' ' <!-- Google tag (gtag.js) -->\n' ' <script async ' 'src="https://www.googletagmanager.com/gtag/js?id=G-V9DHE9SRSZ"></script>\n' ' <script>\n' ' window.dataLayer = window.dataLayer || [];\n' ' function gtag(){dataLayer.push(arguments);}\n' " gtag('js', new Date());\n" '\n' " gtag('config', 'G-V9DHE9SRSZ');\n" ' </script>\n' '\n' ' <meta property="og:type" content="website">\n' ' ', '\n' ' <meta property="og:title" content="Скачать данные – Карта ДТП">\n' ' <meta property="og:description" content="Скачать данные ДТП по всем ' 'регионам">\n' ' <meta name="description" content="Скачать данные ДТП по всем регионам">\n' ' <meta name="keywords" content="Карта, ДТП, данные">\n' ' <title>Скачать данные – Карта ДТП</title>\n', '\n' ' <meta name="twitter:card" content="summary_large_image">\n' ' <meta property="og:site_name" content="Карта ДТП" /> \n' '\n' '\n' ' \n' ' <link rel="stylesheet" ' 'href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">\n' ' <link rel="stylesheet" ' 'href="https://use.fontawesome.com/releases/v5.8.1/css/all.css">\n' ' <link ' 'href="https://fonts.googleapis.com/css2?family=Merriweather&display=swap" ' 'rel="stylesheet">\n' ' <link ' 'href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap" ' 'rel="stylesheet">\n' ' <link rel="stylesheet" href="', '/static/css/style.css', '">\n' '\n' ' <script type="text/javascript" ' 'src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>\n' ' <script ' 'src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>\n' '\n' ' ', '\n ', '\n\n\n</head>\n<body>\n', '\n' '\n' '<nav class="navbar navbar-expand-lg navbar-light">\n' ' <a class="navbar-brand" href="/">\n' ' <img src="/static/media/logo.png">\n' ' </a>\n' ' <button class="navbar-toggler" type="button" data-toggle="collapse" ' 'data-target="#navbarSupportedContent"\n' ' aria-controls="navbarSupportedContent" aria-expanded="false" ' 'aria-label="Toggle navigation">\n' ' <span class="navbar-toggler-icon"></span>\n' ' </button>\n' ' \n' '\n' ' <div class="collapse navbar-collapse" id="navbarSupportedContent">\n' ' <ul class="navbar-nav ml-auto my-2 my-lg-0">\n' ' <li class="nav-item ">\n' ' <div style="">\n' ' <a class="nav-link" href="/blog/">Что почитать</a>\n' ' </div>\n' '\n' ' </li>\n' ' <li class="nav-item ">\n' ' <a class="nav-link" href="/pages/dashboard/">Статистика</a>\n' ' </li>\n' ' <li class="nav-item active">\n' ' <a class="nav-link" href="/opendata/">Скачать данные</a>\n' ' </li>\n' ' <li class="… <trimmed 6996 bytes string> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в исследованиях и анализировать с помощью своих инструментов. Первоисточник данных – официальный сайт ГИБДД, но эти данные приведены с изменениями (например, корректировки координат).</p>'}] |
node | <Block Node: content. Contents: [<TextNode: '\n'>]> |
self | [<django.template.defaulttags.LoadNode object at 0x78a9e4de0d00>, <TextNode: '\n\n<!DOCTYPE html>\n<html l'>, <django.templatetags.static.StaticNode object at 0x78a9e4de07c0>, <TextNode: '" type="image/x-icon">\n\n '>, <Block Node: meta-tags. Contents: [<TextNode: '\n <meta property="'>]>, <TextNode: '\n <meta name="twitter:'>, <django.templatetags.static.StaticNode object at 0x78a9d8036dc0>, <TextNode: '">\n\n <script type="tex'>, <Block Node: extra-head. Contents: [<TextNode: '\n '>]>, <TextNode: '\n\n\n</head>\n<body>\n'>, <django.template.loader_tags.IncludeNode object at 0x78a9d80365e0>, <TextNode: '\n\n'>, <IfNode>, <TextNode: '\n\n'>, <Block Node: content. Contents: [<TextNode: '\n'>]>, <TextNode: '\n\n'>, <IfNode>, <TextNode: '\n\n'>, <IfNode>, <TextNode: '\n\n\n'>, <Block Node: page-scripts. Contents: [<TextNode: '\n'>]>, <TextNode: '\n\n<script>\n let progre'>] |
/usr/local/lib/python3.8/site-packages/django/template/base.py
, line 905, 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 and not hasattr(e, 'template_debug'):
e.template_debug = context.render_context.template.get_exception_info(e, self.token)
raise
def __iter__(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в исследованиях и анализировать с помощью своих инструментов. Первоисточник данных – официальный сайт ГИБДД, но эти данные приведены с изменениями (например, корректировки координат).</p>'}] |
self | <Block Node: content. Contents: [<TextNode: '\n'>]> |
/usr/local/lib/python3.8/site-packages/django/template/loader_tags.py
, line 62, 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 <div class="containe'>, <Variable Node: text | safe>, <TextNode: '\n <br>\n '>, <ForNode: for opendata_item in opendata, tail_len: 11>, <TextNode: '\n </tbody>\n '>]> |
block_context | <django.template.loader_tags.BlockContext object at 0x78a9d14b3f70> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в исследованиях и анализировать с помощью своих инструментов. Первоисточник данных – официальный сайт ГИБДД, но эти данные приведены с изменениями (например, корректировки координат).</p>'}] |
push | <Block Node: content. Contents: [<TextNode: '\n <div class="containe'>, <Variable Node: text | safe>, <TextNode: '\n <br>\n '>, <ForNode: for opendata_item in opendata, tail_len: 11>, <TextNode: '\n </tbody>\n '>]> |
self | <Block Node: content. Contents: [<TextNode: '\n'>]> |
/usr/local/lib/python3.8/site-packages/django/template/base.py
, line 938, in render
# extend_nodelist().
contains_nontext = False
def render(self, context):
bits = []
for node in self:
if isinstance(node, Node):
bit = node.render_annotated(context)…
else:
bit = node
bits.append(str(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
Variable | Value |
---|---|
bit | ('\n' ' <br>\n' ' <p>\n' ' <a data-toggle="collapse" href="#collapseExample" ' 'role="button"\n' ' aria-expanded="false" aria-controls="collapseExample">\n' ' Структура данных\n' ' </a>\n' ' </p>\n' ' <div class="collapse" id="collapseExample">\n' ' <div class="card card-body">\n' ' <pre><code><samp>{\n' ' "id": 384094, # идентификатор\n' ' "tags": ["Дорожно-транспортные происшествия"], # показатели с ' 'официального сайта ГИБДД\n' ' "light": "Светлое время суток", # время суток\n' ' "point": {"lat": 50.6039, "long": 36.5578}, # координаты\n' ' "nearby": [ "Нерегулируемый перекрёсток неравнозначных улиц (дорог)", ' '"Жилые дома индивидуальной застройки"], # координаты\n' ' "region": "Белгород", # город/район\n' ' "address": "г Белгород, ул Сумская, 30", # адрес\n' ' "weather": ["Ясно"], # погода\n' ' "category": "Столкновение", # тип ДТП\n' ' "datetime": "2017-08-05 13:06:00", # дата и время\n' ' "severity": "Легкий", # тяжесть ДТП/вред здоровью\n' ' "vehicles": [ # участники – транспортные средства\n' ' {\n' ' "year": 2010, # год производства транспортного средства\n' ' "brand": "ВАЗ", # марка транспортного средства\n' ' "color": "Иные цвета", # цвет транспортного средства\n' ' "model": "Priora", # модель транспортного средства\n' ' "category": "С-класс (малый средний, компактный) до 4,3 м", # ' 'категория транспортного средства\n' ' "participants": [ # участники внутри транспортных средств\n' ' {\n' ' "role": "Водитель", # роль участника\n' ' "gender": "Женский", # пол участника\n' ' "violations": [], # нарушения правил участником\n' ' "health_status": "Раненый, находящийся...", # состояние здоровья ' 'участника\n' ' "years_of_driving_experience": 11 # стаж вождения участника ' '(только у водителей)\n' ' }\n' ' ]\n' ' },\n' ' ],\n' ' "dead_count": 0, # кол-во погибших в ДТП\n' ' "participants": [], # участники без транспортных средств (описание, как ' 'у участников внутри транспортных средств)\n' ' "injured_count": 2, # кол-во раненых в ДТП\n' ' "parent_region": "Белгородская область", # регион\n' ' "road_conditions": ["Сухое"], # состояние дорожного покрытия\n' ' "participants_count": 3, # кол-во участников ДТП\n' ' "participant_categories": ["Все участники", "Дети"] # категории ' 'участников\n' ' }</samp></code></pre>\n' ' </div>\n' ' </div>\n' ' </div>\n' '\n' '\n' ' <table class="table">\n' ' <tbody>\n' ' ') |
bits | ['\n' ' <div class="container mt-5 mb-5">\n' ' <h2 class="text-center mb-4">Скачать данные</h2>\n' ' <div class="post mt-5 mb-5 ml-auto mr-auto">\n' ' ', '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в ' 'исследованиях и анализировать с помощью своих ' 'инструментов. Первоисточник данных – официальный сайт ГИБДД, но ' 'эти данные приведены с изменениями (например, корректировки ' 'координат).</p>', '\n' ' <br>\n' ' <p>\n' ' <a data-toggle="collapse" href="#collapseExample" ' 'role="button"\n' ' aria-expanded="false" aria-controls="collapseExample">\n' ' Структура данных\n' ' </a>\n' ' </p>\n' ' <div class="collapse" id="collapseExample">\n' ' <div class="card card-body">\n' ' <pre><code><samp>{\n' ' "id": 384094, # идентификатор\n' ' "tags": ["Дорожно-транспортные происшествия"], # показатели с ' 'официального сайта ГИБДД\n' ' "light": "Светлое время суток", # время суток\n' ' "point": {"lat": 50.6039, "long": 36.5578}, # координаты\n' ' "nearby": [ "Нерегулируемый перекрёсток неравнозначных улиц (дорог)", ' '"Жилые дома индивидуальной застройки"], # координаты\n' ' "region": "Белгород", # город/район\n' ' "address": "г Белгород, ул Сумская, 30", # адрес\n' ' "weather": ["Ясно"], # погода\n' ' "category": "Столкновение", # тип ДТП\n' ' "datetime": "2017-08-05 13:06:00", # дата и время\n' ' "severity": "Легкий", # тяжесть ДТП/вред здоровью\n' ' "vehicles": [ # участники – транспортные средства\n' ' {\n' ' "year": 2010, # год производства транспортного средства\n' ' "brand": "ВАЗ", # марка транспортного средства\n' ' "color": "Иные цвета", # цвет транспортного средства\n' ' "model": "Priora", # модель транспортного средства\n' ' "category": "С-класс (малый средний, компактный) до 4,3 м", # ' 'категория транспортного средства\n' ' "participants": [ # участники внутри транспортных средств\n' ' {\n' ' "role": "Водитель", # роль участника\n' ' "gender": "Женский", # пол участника\n' ' "violations": [], # нарушения правил участником\n' ' "health_status": "Раненый, находящийся...", # состояние здоровья ' 'участника\n' ' "years_of_driving_experience": 11 # стаж вождения участника ' '(только у водителей)\n' ' }\n' ' ]\n' ' },\n' ' ],\n' ' "dead_count": 0, # кол-во погибших в ДТП\n' ' "participants": [], # участники без транспортных средств (описание, как ' 'у участников внутри транспортных средств)\n' ' "injured_count": 2, # кол-во раненых в ДТП\n' ' "parent_region": "Белгородская область", # регион\n' ' "road_conditions": ["Сухое"], # состояние дорожного покрытия\n' ' "participants_count": 3, # кол-во участников ДТП\n' ' "participant_categories": ["Все участники", "Дети"] # категории ' 'участников\n' ' }</samp></code></pre>\n' ' </div>\n' ' </div>\n' ' </div>\n' '\n' '\n' ' <table class="table">\n' ' <tbody>\n' ' '] |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в исследованиях и анализировать с помощью своих инструментов. Первоисточник данных – официальный сайт ГИБДД, но эти данные приведены с изменениями (например, корректировки координат).</p>'}] |
node | <ForNode: for opendata_item in opendata, tail_len: 11> |
self | [<TextNode: '\n <div class="containe'>, <Variable Node: text | safe>, <TextNode: '\n <br>\n '>, <ForNode: for opendata_item in opendata, tail_len: 11>, <TextNode: '\n </tbody>\n '>] |
/usr/local/lib/python3.8/site-packages/django/template/base.py
, line 905, 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 and not hasattr(e, 'template_debug'):
e.template_debug = context.render_context.template.get_exception_info(e, self.token)
raise
def __iter__(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в исследованиях и анализировать с помощью своих инструментов. Первоисточник данных – официальный сайт ГИБДД, но эти данные приведены с изменениями (например, корректировки координат).</p>'}] |
self | <ForNode: for opendata_item in opendata, tail_len: 11> |
/usr/local/lib/python3.8/site-packages/django/template/defaulttags.py
, line 211, in render
unpacked_vars = dict(zip(self.loopvars, item))
pop_context = True
context.update(unpacked_vars)
else:
context[self.loopvars[0]] = item
for node in self.nodelist_loop:
nodelist.append(node.render_annotated(context))…
if pop_context:
# Pop the loop variables pushed on to the context to avoid
# the context ending up in an inconsistent state when other
# tags (e.g., include and with) push data to context.
context.pop()
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в исследованиях и анализировать с помощью своих инструментов. Первоисточник данных – официальный сайт ГИБДД, но эти данные приведены с изменениями (например, корректировки координат).</p>'}] |
i | 3 |
item | <OpenData: OpenData object (85)> |
len_values | 95 |
loop_dict | {'counter': 4, 'counter0': 3, 'first': False, 'last': False, 'parentloop': {}, 'revcounter': 92, 'revcounter0': 91} |
node | <Variable Node: opendata_item.mb_file_size|floatformat:"2"> |
nodelist | ['\n <tr>\n <td><b>', 'Амурская область', '</b></td>\n <td class="small">', 'январь 2015', ' - ', 'апрель 2025', '</td>\n <td class="small">', '24.69', ' mb</td>\n' ' <td class="text-center"><a href="/media/opendata/', 'amurskaia-oblast', '.geojson"\n' ' ' 'class="button">Скачать .geojson</a></td>\n' ' </tr>\n' ' ', '\n <tr>\n <td><b>', 'Архангельская область', '</b></td>\n <td class="small">', 'январь 2015', ' - ', 'апрель 2025', '</td>\n <td class="small">', '26.35', ' mb</td>\n' ' <td class="text-center"><a href="/media/opendata/', 'arkhangelskaia-oblast', '.geojson"\n' ' ' 'class="button">Скачать .geojson</a></td>\n' ' </tr>\n' ' ', '\n <tr>\n <td><b>', 'Астраханская область', '</b></td>\n <td class="small">', 'январь 2015', ' - ', 'апрель 2025', '</td>\n <td class="small">', '25.42', ' mb</td>\n' ' <td class="text-center"><a href="/media/opendata/', 'astrakhanskaia-oblast', '.geojson"\n' ' ' 'class="button">Скачать .geojson</a></td>\n' ' </tr>\n' ' ', '\n <tr>\n <td><b>', 'Белгородская область', '</b></td>\n <td class="small">', 'январь 2015', ' - ', 'апрель 2025', '</td>\n <td class="small">'] |
num_loopvars | 1 |
parentloop | {} |
pop_context | False |
self | <ForNode: for opendata_item in opendata, tail_len: 11> |
unpack | False |
values | <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']> |
/usr/local/lib/python3.8/site-packages/django/template/base.py
, line 905, 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 and not hasattr(e, 'template_debug'):
e.template_debug = context.render_context.template.get_exception_info(e, self.token)
raise
def __iter__(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в исследованиях и анализировать с помощью своих инструментов. Первоисточник данных – официальный сайт ГИБДД, но эти данные приведены с изменениями (например, корректировки координат).</p>'}] |
self | <Variable Node: opendata_item.mb_file_size|floatformat:"2"> |
/usr/local/lib/python3.8/site-packages/django/template/base.py
, line 988, in render
self.filter_expression = filter_expression
def __repr__(self):
return "<Variable Node: %s>" % self.filter_expression
def render(self, context):
try:
output = self.filter_expression.resolve(context)…
except UnicodeDecodeError:
# Unicode conversion can fail sometimes for reasons out of our
# control (e.g. exception rendering). In that case, we fail
# quietly.
return ''
return render_value_in_context(output, context)
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в исследованиях и анализировать с помощью своих инструментов. Первоисточник данных – официальный сайт ГИБДД, но эти данные приведены с изменениями (например, корректировки координат).</p>'}] |
self | <Variable Node: opendata_item.mb_file_size|floatformat:"2"> |
/usr/local/lib/python3.8/site-packages/django/template/base.py
, line 671, in resolve
self.filters = filters
self.var = var_obj
def resolve(self, context, ignore_failures=False):
if isinstance(self.var, Variable):
try:
obj = self.var.resolve(context)…
except VariableDoesNotExist:
if ignore_failures:
obj = None
else:
string_if_invalid = context.template.engine.string_if_invalid
if string_if_invalid:
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в исследованиях и анализировать с помощью своих инструментов. Первоисточник данных – официальный сайт ГИБДД, но эти данные приведены с изменениями (например, корректировки координат).</p>'}] |
ignore_failures | False |
self | <django.template.base.FilterExpression object at 0x78a9c7db7310> |
/usr/local/lib/python3.8/site-packages/django/template/base.py
, line 796, in resolve
var)
self.lookups = tuple(var.split(VARIABLE_ATTRIBUTE_SEPARATOR))
def resolve(self, context):
"""Resolve this variable against a given context."""
if self.lookups is not None:
# We're dealing with a variable that needs to be resolved
value = self._resolve_lookup(context)…
else:
# We're dealing with a literal, so it's already been "resolved"
value = self.literal
if self.translate:
is_safe = isinstance(value, SafeData)
msgid = value.replace('%', '%%')
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в исследованиях и анализировать с помощью своих инструментов. Первоисточник данных – официальный сайт ГИБДД, но эти данные приведены с изменениями (например, корректировки координат).</p>'}] |
self | <Variable: 'opendata_item.mb_file_size'> |
/usr/local/lib/python3.8/site-packages/django/template/base.py
, line 858, in _resolve_lookup
if callable(current):
if getattr(current, 'do_not_call_in_templates', False):
pass
elif getattr(current, 'alters_data', False):
current = context.template.engine.string_if_invalid
else:
try: # method call (assuming no args required)
current = current()…
except TypeError:
signature = inspect.signature(current)
try:
signature.bind()
except TypeError: # arguments *were* required
current = context.template.engine.string_if_invalid # invalid method call
Variable | Value |
---|---|
bit | 'mb_file_size' |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'opendata': <QuerySet [<OpenData: OpenData object (12)>, <OpenData: OpenData object (6)>, <OpenData: OpenData object (62)>, <OpenData: OpenData object (85)>, <OpenData: OpenData object (38)>, <OpenData: OpenData object (84)>, <OpenData: OpenData object (1)>, <OpenData: OpenData object (23)>, <OpenData: OpenData object (15)>, <OpenData: OpenData object (82)>, <OpenData: OpenData object (5)>, <OpenData: OpenData object (54)>, <OpenData: OpenData object (24)>, <OpenData: OpenData object (89)>, <OpenData: OpenData object (28)>, <OpenData: OpenData object (19)>, <OpenData: OpenData object (9)>, <OpenData: OpenData object (22)>, <OpenData: OpenData object (30)>, <OpenData: OpenData object (55)>, '...(remaining elements truncated)...']>, 'start_date': datetime.datetime(2015, 1, 1, 0, 0), 'text': '<p>Здесь вы можете скачать данные по ДТП, чтобы использовать их в исследованиях и анализировать с помощью своих инструментов. Первоисточник данных – официальный сайт ГИБДД, но эти данные приведены с изменениями (например, корректировки координат).</p>'}] |
current | <bound method OpenData.mb_file_size of <OpenData: OpenData object (85)>> |
self | <Variable: 'opendata_item.mb_file_size'> |
signature | <Signature ()> |
template_name | 'opendata.html' |
/code/application/models.py
, line 76, in mb_file_size
class OpenData(models.Model):
region = models.ForeignKey("data.Region", null=True, blank=True, default=None, on_delete=models.SET_NULL)
date = models.DateField(help_text="date", null=True, blank=True, default=None, db_index=True)
file_size = models.IntegerField(null=True, blank=True, default=None)
def mb_file_size(self):
return self.file_size/(1024*1024)…
class Ticket(models.Model):
dtp = models.ForeignKey("data.DTP", null=True, blank=True, default=None, on_delete=models.SET_NULL)
category = models.CharField(max_length=200, null=True, blank=True, default=None, choices=[
("fix_point", "Корректировка координат"),
Variable | Value |
---|---|
self | <OpenData: OpenData object (85)> |
AnonymousUser
No GET data
No POST data
No FILES data
No cookie data
Variable | Value |
---|---|
ALLOWED_HOSTS | '*' |
CONTENT_LENGTH | '' |
CONTENT_TYPE | 'text/plain' |
DATABASE_URL | 'postgis://docker:docker@db:5432/dtpstat' |
DEBUG | '1' |
DJANGO_SETTINGS_MODULE | 'dtpstat.settings' |
GATEWAY_INTERFACE | 'CGI/1.1' |
GPG_KEY | '********************' |
HERE_TOKEN | '********************' |
HOME | '/root' |
HOSTNAME | '12dbd34d5ca4' |
HTTP_ACCEPT | '*/*' |
HTTP_ACCEPT_ENCODING | 'gzip,deflate' |
HTTP_CONNECTION | 'close' |
HTTP_HOST | 'cms.dtp-stat.ru' |
HTTP_SENTRY_TRACE | 'f1b49ac00a2146c8b0e6c4d4fec70887-90e1c0a910d9e111-1' |
HTTP_USER_AGENT | 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)' |
HTTP_X_FORWARDED_FOR | '44.215.111.231' |
LANG | 'C.UTF-8' |
MEDIA_ROOT | '/app/media' |
PATH | '/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' |
PATH_INFO | '/opendata/' |
PROJECT_PATH | '/code' |
PROXY | '' |
PWD | '/code' |
PYTHONDONTWRITEBYTECODE | '1' |
PYTHONUNBUFFERED | '1' |
PYTHON_GET_PIP_SHA256 | 'fa6f3fb93cce234cd4e8dd2beb54a51ab9c247653b52855a48dd44e6b21ff28b' |
PYTHON_GET_PIP_URL | 'https://github.com/pypa/get-pip/raw/c20b0cfd643cd4a19246ccf204e2997af70f6b21/public/get-pip.py' |
PYTHON_PIP_VERSION | '21.2.4' |
PYTHON_VERSION | '3.8.11' |
QUERY_STRING | '' |
RECAPTCHA_PRIVATE_KEY | '********************' |
RECAPTCHA_PUBLIC_KEY | '********************' |
REMOTE_ADDR | '172.18.0.1' |
REMOTE_HOST | '' |
REQUEST_METHOD | 'GET' |
RUN_MAIN | 'true' |
SCRIPT_NAME | '' |
SECRET_KEY | '********************' |
SERVER_NAME | '12dbd34d5ca4' |
SERVER_PORT | '5000' |
SERVER_PROTOCOL | 'HTTP/1.0' |
SERVER_SOFTWARE | 'WSGIServer/0.2' |
STATICFILES_DIRS | '/code/static' |
STATIC_ROOT | '/static' |
TELEGRAM_TOKEN | '********************' |
TWITTER_CONSUMER_KEY | '********************' |
TWITTER_CONSUMER_SECRET | '********************' |
TWITTER_CONSUMER_TOKEN | '********************' |
TWITTER_CONSUMER_TOKEN_SECRET | '********************' |
TZ | 'UTC' |
YANDEX_TOKEN | '********************' |
wsgi.errors | <_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'> |
wsgi.file_wrapper | <class 'wsgiref.util.FileWrapper'> |
wsgi.input | <django.core.handlers.wsgi.LimitedStream object at 0x78a9d2a8cf70> |
wsgi.multiprocess | False |
wsgi.multithread | True |
wsgi.run_once | False |
wsgi.url_scheme | 'http' |
wsgi.version | (1, 0) |
dtpstat.settings
Setting | Value |
---|---|
ABSOLUTE_URL_OVERRIDES | {} |
ACCOUNT_AUTHENTICATED_LOGIN_REDIRECTS | True |
ACCOUNT_AUTHENTICATION_METHOD | 'username' |
ACCOUNT_EMAIL_REQUIRED | False |
ACCOUNT_FORMS | {'signup': 'application.forms.MyCustomSignupForm'} |
ACCOUNT_USER_MODEL_EMAIL_FIELD | None |
ADMINS | [] |
ALLOWED_HOSTS | ['*'] |
APPEND_SLASH | True |
AUTHENTICATION_BACKENDS | ['django.contrib.auth.backends.ModelBackend'] |
AUTH_PASSWORD_VALIDATORS | '********************' |
AUTH_USER_MODEL | 'auth.User' |
BASE_DIR | '/code' |
CACHES | {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}} |
CACHE_MIDDLEWARE_ALIAS | 'default' |
CACHE_MIDDLEWARE_KEY_PREFIX | '********************' |
CACHE_MIDDLEWARE_SECONDS | 600 |
CKEDITOR_CONFIGS | {'default': {'forcePasteAsPlainText': True, 'height': 300, 'language': 'ru', 'toolbar': 'UltraFull', 'toolbar_UltraFull': [['Font', 'FontSize', 'Format'], ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat'], ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'], ['Link', 'Unlink', 'Anchor'], ['Image', 'Flash', 'Table', 'HorizontalRule', 'PageBreak', 'Smiley', 'SpecialChar'], ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo'], ['TextColor', 'BGColor'], ['Maximize', 'Source']]}} |
CKEDITOR_UPLOAD_PATH | 'blog/' |
CORS_ORIGIN_ALLOW_ALL | True |
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_MAX_AGE': 0, 'ENGINE': 'django.contrib.gis.db.backends.postgis', 'HOST': 'db', 'NAME': 'dtpstat', 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': 5432, 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': 'docker'}} |
DATABASE_ROUTERS | [] |
DATA_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
DATA_UPLOAD_MAX_NUMBER_FIELDS | 1000 |
DATETIME_FORMAT | 'd.m.Y H:i' |
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 | 'd.m.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_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_HASHING_ALGORITHM | 'sha256' |
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 |
ENV_PATH | '/code/.env' |
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 | 1 |
FIXTURE_DIRS | [] |
FORCE_SCRIPT_NAME | None |
FORMAT_MODULE_PATH | None |
FORM_RENDERER | 'django.forms.renderers.DjangoTemplates' |
HERE_TOKEN | '********************' |
IGNORABLE_404_URLS | [] |
INSTALLED_APPS | ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.sites', 'django.contrib.gis', 'django.contrib.sitemaps', 'data', 'application', 'rest_framework', 'django_filters', 'ckeditor', 'ckeditor_uploader', 'captcha', 'allauth', 'allauth.account', 'allauth.socialaccount', 'corsheaders', 'application.templatetags.tags'] |
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'), ('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 | 'ru' |
LANGUAGE_COOKIE_AGE | None |
LANGUAGE_COOKIE_DOMAIN | None |
LANGUAGE_COOKIE_HTTPONLY | False |
LANGUAGE_COOKIE_NAME | 'django_language' |
LANGUAGE_COOKIE_PATH | '/' |
LANGUAGE_COOKIE_SAMESITE | None |
LANGUAGE_COOKIE_SECURE | False |
LOCALE_PATHS | [] |
LOGGING | {'disable_existing_loggers': False, 'formatters': {'simple': {'format': '{levelname} {message}', 'style': '{'}, 'verbose': {'format': '{levelname} {asctime} {message}', 'style': '{'}}, 'handlers': {'console': {'class': 'logging.StreamHandler', 'formatter': 'verbose'}}, 'root': {'handlers': ['console'], 'level': 'INFO'}, 'version': 1} |
LOGGING_CONFIG | 'logging.config.dictConfig' |
LOGIN_REDIRECT_URL | '/board/' |
LOGIN_URL | '/accounts/login/' |
LOGOUT_REDIRECT_URL | None |
MANAGERS | [] |
MEDIA_ROOT | '/app/media' |
MEDIA_URL | '/media/' |
MESSAGE_STORAGE | 'django.contrib.messages.storage.fallback.FallbackStorage' |
MIDDLEWARE | ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'corsheaders.middleware.CorsMiddleware', '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' |
NEXTJS_BASE_URL | 'https://dtp-stat-on-nextjs.netlify.app' |
NEXTJS_IFRAME_WITH_COMMENTS | False |
NEXTJS_IFRAME_WITH_MAP | False |
NUMBER_GROUPING | 0 |
PASSWORD_HASHERS | '********************' |
PASSWORD_RESET_TIMEOUT | '********************' |
PASSWORD_RESET_TIMEOUT_DAYS | '********************' |
PREPEND_WWW | False |
PRODUCTION_HOST | 'dtp-stat.ru' |
PROXY_LIST | [] |
RECAPTCHA_PRIVATE_KEY | '********************' |
RECAPTCHA_PUBLIC_KEY | '********************' |
REST_FRAMEWORK | {'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',), 'DEFAULT_PAGINATION_CLASS': None} |
ROOT_URLCONF | 'dtpstat.urls' |
SECRET_KEY | '********************' |
SECURE_BROWSER_XSS_FILTER | False |
SECURE_CONTENT_TYPE_NOSNIFF | True |
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 | 'dtpstat.settings' |
SHORT_DATETIME_FORMAT | 'm/d/Y P' |
SHORT_DATE_FORMAT | 'm/d/Y' |
SIGNING_BACKEND | 'django.core.signing.TimestampSigner' |
SILENCED_SYSTEM_CHECKS | ['captcha.recaptcha_test_key_error'] |
SITE_ID | 1 |
STATICFILES_DIRS | ['/code/static'] |
STATICFILES_FINDERS | ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder'] |
STATICFILES_STORAGE | 'django.contrib.staticfiles.storage.StaticFilesStorage' |
STATIC_ROOT | '/static' |
STATIC_URL | '/static/' |
TEMPLATES | [{'APP_DIRS': True, 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['/code/templates'], 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'application.context_processors.settings']}}] |
TEST_NON_SERIALIZED_APPS | [] |
TEST_RUNNER | 'django.test.runner.DiscoverRunner' |
THOUSAND_SEPARATOR | ',' |
TIME_FORMAT | 'P' |
TIME_INPUT_FORMATS | ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M'] |
TIME_ZONE | 'UTC' |
USE_I18N | True |
USE_L10N | False |
USE_THOUSAND_SEPARATOR | False |
USE_TZ | False |
USE_X_FORWARDED_HOST | False |
USE_X_FORWARDED_PORT | False |
WSGI_APPLICATION | 'dtpstat.wsgi.application' |
X_FRAME_OPTIONS | 'DENY' |
YANDEX_TOKEN | '********************' |
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.