рдпрджрд┐ django-debug-toolbar
django рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреЗрд╕реНрдЯ (рдЙрджрд╛рд╣рд░рдг: python manage.py test
), рдФрд░ django reverse
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдбреЙрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ ), рдпрд╣ рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛:
======================================================================
ERROR: test_list (toolbar.tests.MyTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Users\vm\Desktop\test_project\toolbar\tests.py", line 10, in test_li
st
response = self.client.get(reverse('list'))
File "C:\Python27\lib\site-packages\django\test\client.py", line 536, in get
**extra)
File "C:\Python27\lib\site-packages\django\test\client.py", line 340, in get
return self.generic('GET', path, secure=secure, **r)
File "C:\Python27\lib\site-packages\django\test\client.py", line 416, in gener
ic
return self.request(**r)
File "C:\Python27\lib\site-packages\django\test\client.py", line 501, in reque
st
six.reraise(*exc_info)
File "C:\Python27\lib\site-packages\django\core\handlers\exception.py", line 4
1, in inner
response = get_response(request)
File "C:\Python27\lib\site-packages\django\utils\deprecation.py", line 142, in
__call__
response = self.process_response(request, response)
File "C:\Python27\lib\site-packages\debug_toolbar\middleware.py", line 134, in
process_response
bits[-2] += toolbar.render_toolbar()
File "C:\Python27\lib\site-packages\debug_toolbar\toolbar.py", line 64, in ren
der_toolbar
return render_to_string('debug_toolbar/base.html', context)
File "C:\Python27\lib\site-packages\django\template\loader.py", line 68, in re
nder_to_string
return template.render(context, request)
File "C:\Python27\lib\site-packages\django\template\backends\django.py", line
66, in render
return self.template.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py", line 207, in ren
der
return self._render(context)
File "C:\Python27\lib\site-packages\django\test\utils.py", line 107, in instru
mented_test_render
return self.nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py", line 990, in ren
der
bit = node.render_annotated(context)
File "C:\Python27\lib\site-packages\django\template\base.py", line 957, in ren
der_annotated
return self.render(context)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py", line 216,
in render
nodelist.append(node.render_annotated(context))
File "C:\Python27\lib\site-packages\django\template\base.py", line 957, in ren
der_annotated
return self.render(context)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py", line 322,
in render
return nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py", line 990, in ren
der
bit = node.render_annotated(context)
File "C:\Python27\lib\site-packages\django\template\base.py", line 957, in ren
der_annotated
return self.render(context)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py", line 322,
in render
return nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py", line 990, in ren
der
bit = node.render_annotated(context)
File "C:\Python27\lib\site-packages\django\template\base.py", line 957, in ren
der_annotated
return self.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py", line 1040, in re
nder
output = self.filter_expression.resolve(context)
File "C:\Python27\lib\site-packages\django\template\base.py", line 708, in res
olve
obj = self.var.resolve(context)
File "C:\Python27\lib\site-packages\django\template\base.py", line 849, in res
olve
value = self._resolve_lookup(context)
File "C:\Python27\lib\site-packages\django\template\base.py", line 890, in _re
solve_lookup
current = getattr(current, bit)
File "C:\Python27\lib\site-packages\debug_toolbar\panels\__init__.py", line 96
, in content
return render_to_string(self.template, self.get_stats())
File "C:\Python27\lib\site-packages\django\template\loader.py", line 68, in re
nder_to_string
return template.render(context, request)
File "C:\Python27\lib\site-packages\django\template\backends\django.py", line
66, in render
return self.template.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py", line 207, in ren
der
return self._render(context)
File "C:\Python27\lib\site-packages\django\test\utils.py", line 107, in instru
mented_test_render
return self.nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py", line 990, in ren
der
bit = node.render_annotated(context)
File "C:\Python27\lib\site-packages\django\template\base.py", line 957, in ren
der_annotated
return self.render(context)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py", line 322,
in render
return nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py", line 990, in ren
der
bit = node.render_annotated(context)
File "C:\Python27\lib\site-packages\django\template\base.py", line 957, in ren
der_annotated
return self.render(context)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py", line 216,
in render
nodelist.append(node.render_annotated(context))
File "C:\Python27\lib\site-packages\django\template\base.py", line 957, in ren
der_annotated
return self.render(context)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py", line 458,
in render
url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
File "C:\Python27\lib\site-packages\django\urls\base.py", line 87, in reverse
raise NoReverseMatch("%s is not a registered namespace" % key)
NoReverseMatch: u'djdt' is not a registered namespace
----------------------------------------------------------------------
Ran 1 test in 0.085s
FAILED (errors=1)
Destroying test database for alias 'default'...
рдЕрдЬрдЧрд░: 2.7.14
рдбреАрдЬреЗрдВрдЧреЛ: 1.11.9
django-рдбреАрдмрдЧ-рдЯреВрд▓рдмрд╛рд░: 1.9.1
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.test import TestCase
from django.core.urlresolvers import reverse
# Create your tests here.
class MyTests(TestCase):
def test_list(self):
response = self.client.get(reverse('list'))
self.assertEqual(response.status_code, 200)
рдЗрд╕ рдкрд░ рдХреЛрдИ рднреА рд╕рдорд╛рдЪрд╛рд░?
Django рдкрд░реАрдХреНрд╖рдг рдзрд╛рд╡рдХ рдЬрдмрд░рди DEBUG=False
рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдбреАрдмрдЧ рдЯреВрд▓рдмрд╛рд░ рдХреЗ URL рдкреИрдЯрд░реНрди рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред
рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╕рдордп рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ MIDDLEWARE
рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╕рд╛рде рд╣реА, рдЕрдЧрд░ рд╕реБрдЭрд╛рд╡ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкреИрдЪ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВред
рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ SHOW_TOOLBAR_CALLBACK
рдХрд╛ рдореВрд▓реНрдп рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд░рд╣рд╛ рдерд╛ DEBUG
ред рд╕рдорд╛рдзрд╛рди django.conf.settings
рдЖрдпрд╛рдд рдХрд░рдирд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп settings.DEBUG
рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реИред
рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИрдВ?
рдореБрдЭреЗ рдпрд╣ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ:
рд╕реЗрдЯрд┐рдВрдЧреНрд╕.py
TESTING_MODE = 'test' in sys.argv
urls.py
if settings.DEBUG or settings.TESTING_MODE:
import debug_toolbar
urlpatterns += [
url(r'^__debug__/', include(debug_toolbar.urls)),
]
рдпрд╣ рдмрд╣реБрдд рд╣реА рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рдЕрдиреНрдп рдХрд╛рдордХрд╛рдЬ рднреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ред
рдореИрдВрдиреЗ SamMorrowDrums рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЙрдирдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╣ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ:
рд╕реЗрдЯрд┐рдВрдЧреНрд╕.py
import sys
DEBUG = True
TESTING_MODE = 'test' in sys.argv
DEV_MODE = DEBUG and not TESTING_MODE
if DEV_MODE:
INSTALLED_APPS += [
'debug_toolbar'
]
MIDDLEWARE += ['debug_toolbar.middleware.DebugToolbarMiddleware', ]
# DEBUG TOOLBAR SETTINGS:
DEBUG_TOOLBAR_PANELS = [
'debug_toolbar.panels.versions.VersionsPanel',
'debug_toolbar.panels.timer.TimerPanel',
'debug_toolbar.panels.settings.SettingsPanel',
'debug_toolbar.panels.headers.HeadersPanel',
'debug_toolbar.panels.request.RequestPanel',
'debug_toolbar.panels.sql.SQLPanel',
'debug_toolbar.panels.staticfiles.StaticFilesPanel',
'debug_toolbar.panels.templates.TemplatesPanel',
'debug_toolbar.panels.cache.CachePanel',
'debug_toolbar.panels.signals.SignalsPanel',
'debug_toolbar.panels.logging.LoggingPanel',
'debug_toolbar.panels.redirects.RedirectsPanel',
]
def show_toolbar(request):
return True
DEBUG_TOOLBAR_CONFIG = {
'INTERCEPT_REDIRECT': False,
'SHOW_TOOLBAR_CALLBACK': show_toolbar,
}
urls.py
from django.conf import settings
if settings.DEV_MODE:
import debug_toolbar
urlpatterns += [
path('__debug__/', include(debug_toolbar.urls)),
]
рдЖрдк django-debug-toolbar рджрд┐рдЦрд╛рдиреЗ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрд▓рдмреИрдХ рдХреЛ рднреА рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдкрдиреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ.py
INTERNAL_IPS = ['127.0.0.1']
DEBUG_TOOLBAR_CONFIG = {
'SHOW_TOOLBAR_CALLBACK': lambda r: r.environ.get('SERVER_NAME', None) != 'testserver' and (r.META.get('REMOTE_ADDR', None) in INTERNAL_IPS)
}
... рдпрд╛ "рдкрд░реАрдХреНрд╖рдг рдЕрдиреБрд░реЛрдз рд╣реИ" рдкрд░ рдЬрд╛рдВрдЪ рдХреА рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдзрд┐
рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИ? рдореИрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВред
рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИ? рдореИрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВред
рдирдорд╕реНрддреЗ, рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рднреА рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред django-debug-toolbar==2.2
рдФрд░ Django==2.1.8
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдХреНрдпрд╛ рдпрд╣ рдереЛрдбрд╝рд╛ рдкреБрд░рд╛рдиреЗ django рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
рджреЗрдЦреЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп python manage.py test
рдпрд╣ рдлреЗрдВрдХрддрд╛ рд╣реИ
django.request: ERROR: Internal Server Error: /order_platform/photo_import/
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/django/urls/base.py", line 75, in reverse
extra, resolver = resolver.namespace_dict[ns]
KeyError: 'djdt'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/usr/local/lib/python3.6/site-packages/debug_toolbar/middleware.py", line 99, in __call__
bits[-2] += toolbar.render_toolbar()
File "/usr/local/lib/python3.6/site-packages/debug_toolbar/toolbar.py", line 69, in render_toolbar
return render_to_string("debug_toolbar/base.html", context)
File "/usr/local/lib/python3.6/site-packages/django/template/loader.py", line 62, in render_to_string
return template.render(context, request)
File "/usr/local/lib/python3.6/site-packages/django/template/backends/django.py", line 61, in render
return self.template.render(context)
File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 171, in render
return self._render(context)
File "/usr/local/lib/python3.6/site-packages/django/test/utils.py", line 96, in instrumented_test_render
return self.nodelist.render(context)
File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render
bit = node.render_annotated(context)
File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated
return self.render(context)
File "/usr/local/lib/python3.6/site-packages/django/template/defaulttags.py", line 309, in render
return nodelist.render(context)
File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render
bit = node.render_annotated(context)
File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated
return self.render(context)
File "/usr/local/lib/python3.6/site-packages/django/template/defaulttags.py", line 442, in render
url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
File "/usr/local/lib/python3.6/site-packages/django/urls/base.py", line 86, in reverse
raise NoReverseMatch("%s is not a registered namespace" % key)
django.urls.exceptions.NoReverseMatch: 'djdt' is not a registered namespace
рдпрд╣ рдореЗрд░рд╛ settings.py
рд╣реИ
if DEBUG:
...
INSTALLED_APPS += ["debug_toolbar"]
# include as early as possible
MIDDLEWARE = ["debug_toolbar.middleware.DebugToolbarMiddleware"] + MIDDLEWARE
DEBUG_TOOLBAR_PANELS = [
"ddt_request_history.panels.request_history.RequestHistoryPanel",
"debug_toolbar.panels.versions.VersionsPanel",
"debug_toolbar.panels.timer.TimerPanel",
"debug_toolbar.panels.settings.SettingsPanel",
"debug_toolbar.panels.headers.HeadersPanel",
"debug_toolbar.panels.request.RequestPanel",
"debug_toolbar.panels.sql.SQLPanel",
"debug_toolbar.panels.staticfiles.StaticFilesPanel",
"debug_toolbar.panels.templates.TemplatesPanel",
"debug_toolbar.panels.cache.CachePanel",
"debug_toolbar.panels.signals.SignalsPanel",
"debug_toolbar.panels.logging.LoggingPanel",
"debug_toolbar.panels.redirects.RedirectsPanel",
]
INSTALLED_APPS += ["django_nose"]
DEBUG_TOOLBAR_CONFIG = {"SHOW_TOOLBAR_CALLBACK": lambda request: True}
TEST_RUNNER = "django_nose.NoseTestSuiteRunner"
@shydefoo рдЖрдк рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдЯреВрд▓рдмрд╛рд░ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк DEBUG
рдХреЛ False
$ рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрднреА рднреА рдЯреВрд▓рдмрд╛рд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
@ рдЯрд┐рдо-рд╢рд┐рд▓рд┐рдВрдЧ рд╣рд╛рдБ, рдореИрдВрдиреЗ рдпрд╣реА рдХрд┐рдпрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ SHOW_TOOLBBAR_CALLBACK
рдореБрджреНрджрд╛ рдерд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ
SHOW_TOOLBAR_CALLBACK
рдХрд╛ рдореВрд▓реНрдп рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд░рд╣рд╛ рдерд╛DEBUG
ред рд╕рдорд╛рдзрд╛рдиdjango.conf.settings
рдЖрдпрд╛рдд рдХрд░рдирд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдпsettings.DEBUG
рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реИред