feat(debug): integrate django-debug-toolbar for enhanced debugging
Add `django-debug-toolbar` to assist with in-depth debugging during development. Updates were made to `settings`, `urls`, and dependency files to enable this feature.
This commit is contained in:
parent
b6d5409fa0
commit
1756c3f2b2
4 changed files with 79 additions and 0 deletions
|
|
@ -34,6 +34,7 @@ dependencies = [
|
||||||
"django-ratelimit==4.1.0",
|
"django-ratelimit==4.1.0",
|
||||||
"django-storages==1.14.6",
|
"django-storages==1.14.6",
|
||||||
"django-unfold==0.80.2",
|
"django-unfold==0.80.2",
|
||||||
|
"django-debug-toolbar==6.2.0",
|
||||||
"django-widget-tweaks==1.5.1",
|
"django-widget-tweaks==1.5.1",
|
||||||
"djangorestframework==3.16.1",
|
"djangorestframework==3.16.1",
|
||||||
"djangorestframework-recursive==0.1.2",
|
"djangorestframework-recursive==0.1.2",
|
||||||
|
|
@ -51,6 +52,7 @@ dependencies = [
|
||||||
"graphene-django==3.2.3",
|
"graphene-django==3.2.3",
|
||||||
"graphene-file-upload==1.3.0",
|
"graphene-file-upload==1.3.0",
|
||||||
"httpx==0.28.1",
|
"httpx==0.28.1",
|
||||||
|
"opentelemetry-instrumentation-django==0.60b1",
|
||||||
"paramiko==4.0.0",
|
"paramiko==4.0.0",
|
||||||
"pillow==12.1.1",
|
"pillow==12.1.1",
|
||||||
"pip==26.0.1",
|
"pip==26.0.1",
|
||||||
|
|
|
||||||
|
|
@ -159,6 +159,7 @@ INSTALLED_APPS: list[str] = [
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
wn_app_index = INSTALLED_APPS.index("django.contrib.staticfiles") - 1
|
wn_app_index = INSTALLED_APPS.index("django.contrib.staticfiles") - 1
|
||||||
INSTALLED_APPS.insert(wn_app_index, "whitenoise.runserver_nostatic")
|
INSTALLED_APPS.insert(wn_app_index, "whitenoise.runserver_nostatic")
|
||||||
|
INSTALLED_APPS.append("debug_toolbar")
|
||||||
|
|
||||||
MIDDLEWARE: list[str] = [
|
MIDDLEWARE: list[str] = [
|
||||||
"schon.middleware.BlockInvalidHostMiddleware",
|
"schon.middleware.BlockInvalidHostMiddleware",
|
||||||
|
|
@ -179,6 +180,12 @@ MIDDLEWARE: list[str] = [
|
||||||
"django_prometheus.middleware.PrometheusAfterMiddleware",
|
"django_prometheus.middleware.PrometheusAfterMiddleware",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
if DEBUG:
|
||||||
|
MIDDLEWARE.insert(
|
||||||
|
MIDDLEWARE.index("django.contrib.sessions.middleware.SessionMiddleware"),
|
||||||
|
"debug_toolbar.middleware.DebugToolbarMiddleware",
|
||||||
|
)
|
||||||
|
|
||||||
TEMPLATES: list[
|
TEMPLATES: list[
|
||||||
dict[str, str | list[str | Path] | dict[str, str | list[str]] | Path | bool]
|
dict[str, str | list[str | Path] | dict[str, str | list[str]] | Path | bool]
|
||||||
] = [
|
] = [
|
||||||
|
|
@ -393,6 +400,16 @@ INTERNAL_IPS: list[str] = [
|
||||||
"127.0.0.1",
|
"127.0.0.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
if DEBUG:
|
||||||
|
import socket
|
||||||
|
|
||||||
|
# Docker: resolve container's gateway IP so debug toolbar works
|
||||||
|
try:
|
||||||
|
_, _, ips = socket.gethostbyname_ex(socket.gethostname())
|
||||||
|
INTERNAL_IPS += [".".join(ip.split(".")[:-1] + ["1"]) for ip in ips]
|
||||||
|
except socket.gaierror:
|
||||||
|
pass
|
||||||
|
|
||||||
if getenv("SENTRY_DSN"):
|
if getenv("SENTRY_DSN"):
|
||||||
import sentry_sdk
|
import sentry_sdk
|
||||||
from sentry_sdk.integrations.celery import CeleryIntegration
|
from sentry_sdk.integrations.celery import CeleryIntegration
|
||||||
|
|
|
||||||
|
|
@ -115,4 +115,7 @@ urlpatterns = [
|
||||||
]
|
]
|
||||||
|
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
|
from debug_toolbar.toolbar import debug_toolbar_urls
|
||||||
|
|
||||||
|
urlpatterns += debug_toolbar_urls()
|
||||||
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||||
|
|
|
||||||
57
uv.lock
57
uv.lock
|
|
@ -828,6 +828,19 @@ wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/1a/6f/ff400d50fd71226e9d16a210c5d097bb797ec21879019ba260365d42e490/django_dbbackup-5.2.0-py3-none-any.whl", hash = "sha256:540948869e44778b5b33333cbab0cfe44279defd47df635d309ede8666894370", size = 35981, upload-time = "2026-02-11T04:47:38.081Z" },
|
{ url = "https://files.pythonhosted.org/packages/1a/6f/ff400d50fd71226e9d16a210c5d097bb797ec21879019ba260365d42e490/django_dbbackup-5.2.0-py3-none-any.whl", hash = "sha256:540948869e44778b5b33333cbab0cfe44279defd47df635d309ede8666894370", size = 35981, upload-time = "2026-02-11T04:47:38.081Z" },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "django-debug-toolbar"
|
||||||
|
version = "6.2.0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "django" },
|
||||||
|
{ name = "sqlparse" },
|
||||||
|
]
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/f1/4d/6acf660500d3d581bfc19460d9605cdf14c275640f35825da1329eaafafa/django_debug_toolbar-6.2.0.tar.gz", hash = "sha256:dc1c174d8fb0ea01435e02d9ceef735cf62daf37c1a6a5692d33b4127327679b", size = 313779, upload-time = "2026-01-20T12:38:25.268Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/88/04/e24611299a5ee0d4edfacf935b09cfb7d5d9cb653bd7b7883c3b43a6f90d/django_debug_toolbar-6.2.0-py3-none-any.whl", hash = "sha256:1575461954e6befa720e999dec13fe4f1cc8baf40b6c3ac2aec5f340c0f9c85f", size = 271354, upload-time = "2026-01-20T12:38:23.608Z" },
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "django-elasticsearch-dsl"
|
name = "django-elasticsearch-dsl"
|
||||||
version = "8.2"
|
version = "8.2"
|
||||||
|
|
@ -2429,6 +2442,37 @@ wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/77/d2/6788e83c5c86a2690101681aeef27eeb2a6bf22df52d3f263a22cee20915/opentelemetry_instrumentation-0.60b1-py3-none-any.whl", hash = "sha256:04480db952b48fb1ed0073f822f0ee26012b7be7c3eac1a3793122737c78632d", size = 33096, upload-time = "2025-12-11T13:35:33.067Z" },
|
{ url = "https://files.pythonhosted.org/packages/77/d2/6788e83c5c86a2690101681aeef27eeb2a6bf22df52d3f263a22cee20915/opentelemetry_instrumentation-0.60b1-py3-none-any.whl", hash = "sha256:04480db952b48fb1ed0073f822f0ee26012b7be7c3eac1a3793122737c78632d", size = 33096, upload-time = "2025-12-11T13:35:33.067Z" },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "opentelemetry-instrumentation-django"
|
||||||
|
version = "0.60b1"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "opentelemetry-api" },
|
||||||
|
{ name = "opentelemetry-instrumentation" },
|
||||||
|
{ name = "opentelemetry-instrumentation-wsgi" },
|
||||||
|
{ name = "opentelemetry-semantic-conventions" },
|
||||||
|
{ name = "opentelemetry-util-http" },
|
||||||
|
]
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/56/dc/a42fb5ff5c4ea8128d7c61a322e0cfbeae0fd204fc63a679f73caeec266e/opentelemetry_instrumentation_django-0.60b1.tar.gz", hash = "sha256:765b69c7ccdea7e9ebfd0b9e68387956b8f74816f3e39775d5b06a20f16b0522", size = 26599, upload-time = "2025-12-11T13:36:56.293Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/bc/05/6b348ea989f7a9e1e6311fa653e113bd39f4506771323e27a639c2a1ea54/opentelemetry_instrumentation_django-0.60b1-py3-none-any.whl", hash = "sha256:3f6b4ba201eee35406dab965b254eed0c64fa1ef42e4a7b0296ad1b30e8e3f81", size = 21172, upload-time = "2025-12-11T13:35:57.365Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "opentelemetry-instrumentation-wsgi"
|
||||||
|
version = "0.60b1"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "opentelemetry-api" },
|
||||||
|
{ name = "opentelemetry-instrumentation" },
|
||||||
|
{ name = "opentelemetry-semantic-conventions" },
|
||||||
|
{ name = "opentelemetry-util-http" },
|
||||||
|
]
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/6d/24/5632d31506a27650567fdff8f9be37fc4d98396b6331617be69bd332bf77/opentelemetry_instrumentation_wsgi-0.60b1.tar.gz", hash = "sha256:eb553eec7ebfcf2945cc10d787a265e7abadb9ed1d1ebce8b13988d44fa0cf45", size = 19167, upload-time = "2025-12-11T13:37:20.3Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/93/98/c637d9e5cab1355d6765de2304199a1d79a43aa94c33d8eddb475327d81a/opentelemetry_instrumentation_wsgi-0.60b1-py3-none-any.whl", hash = "sha256:5e7b432778ebf5a39af136227884a6ab2efc3c4e73e2dbb1d05ecf03ea196705", size = 14583, upload-time = "2025-12-11T13:36:33.164Z" },
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "opentelemetry-sdk"
|
name = "opentelemetry-sdk"
|
||||||
version = "1.39.1"
|
version = "1.39.1"
|
||||||
|
|
@ -2456,6 +2500,15 @@ wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/7a/5e/5958555e09635d09b75de3c4f8b9cae7335ca545d77392ffe7331534c402/opentelemetry_semantic_conventions-0.60b1-py3-none-any.whl", hash = "sha256:9fa8c8b0c110da289809292b0591220d3a7b53c1526a23021e977d68597893fb", size = 219982, upload-time = "2025-12-11T13:32:36.955Z" },
|
{ url = "https://files.pythonhosted.org/packages/7a/5e/5958555e09635d09b75de3c4f8b9cae7335ca545d77392ffe7331534c402/opentelemetry_semantic_conventions-0.60b1-py3-none-any.whl", hash = "sha256:9fa8c8b0c110da289809292b0591220d3a7b53c1526a23021e977d68597893fb", size = 219982, upload-time = "2025-12-11T13:32:36.955Z" },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "opentelemetry-util-http"
|
||||||
|
version = "0.60b1"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/50/fc/c47bb04a1d8a941a4061307e1eddfa331ed4d0ab13d8a9781e6db256940a/opentelemetry_util_http-0.60b1.tar.gz", hash = "sha256:0d97152ca8c8a41ced7172d29d3622a219317f74ae6bb3027cfbdcf22c3cc0d6", size = 11053, upload-time = "2025-12-11T13:37:25.115Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/16/5c/d3f1733665f7cd582ef0842fb1d2ed0bc1fba10875160593342d22bba375/opentelemetry_util_http-0.60b1-py3-none-any.whl", hash = "sha256:66381ba28550c91bee14dcba8979ace443444af1ed609226634596b4b0faf199", size = 8947, upload-time = "2025-12-11T13:36:37.151Z" },
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "orjson"
|
name = "orjson"
|
||||||
version = "3.11.7"
|
version = "3.11.7"
|
||||||
|
|
@ -3296,6 +3349,7 @@ dependencies = [
|
||||||
{ name = "django-constance" },
|
{ name = "django-constance" },
|
||||||
{ name = "django-cors-headers" },
|
{ name = "django-cors-headers" },
|
||||||
{ name = "django-dbbackup" },
|
{ name = "django-dbbackup" },
|
||||||
|
{ name = "django-debug-toolbar" },
|
||||||
{ name = "django-elasticsearch-dsl" },
|
{ name = "django-elasticsearch-dsl" },
|
||||||
{ name = "django-extensions" },
|
{ name = "django-extensions" },
|
||||||
{ name = "django-filter" },
|
{ name = "django-filter" },
|
||||||
|
|
@ -3328,6 +3382,7 @@ dependencies = [
|
||||||
{ name = "graphene-django" },
|
{ name = "graphene-django" },
|
||||||
{ name = "graphene-file-upload" },
|
{ name = "graphene-file-upload" },
|
||||||
{ name = "httpx" },
|
{ name = "httpx" },
|
||||||
|
{ name = "opentelemetry-instrumentation-django" },
|
||||||
{ name = "paramiko" },
|
{ name = "paramiko" },
|
||||||
{ name = "pillow" },
|
{ name = "pillow" },
|
||||||
{ name = "pip" },
|
{ name = "pip" },
|
||||||
|
|
@ -3395,6 +3450,7 @@ requires-dist = [
|
||||||
{ name = "django-constance", specifier = "==4.3.4" },
|
{ name = "django-constance", specifier = "==4.3.4" },
|
||||||
{ name = "django-cors-headers", specifier = "==4.9.0" },
|
{ name = "django-cors-headers", specifier = "==4.9.0" },
|
||||||
{ name = "django-dbbackup", specifier = "==5.2.0" },
|
{ name = "django-dbbackup", specifier = "==5.2.0" },
|
||||||
|
{ name = "django-debug-toolbar", specifier = "==6.2.0" },
|
||||||
{ name = "django-elasticsearch-dsl", specifier = "==8.2" },
|
{ name = "django-elasticsearch-dsl", specifier = "==8.2" },
|
||||||
{ name = "django-extensions", specifier = "==4.1" },
|
{ name = "django-extensions", specifier = "==4.1" },
|
||||||
{ name = "django-filter", specifier = "==25.2" },
|
{ name = "django-filter", specifier = "==25.2" },
|
||||||
|
|
@ -3431,6 +3487,7 @@ requires-dist = [
|
||||||
{ name = "httpx", specifier = "==0.28.1" },
|
{ name = "httpx", specifier = "==0.28.1" },
|
||||||
{ name = "jupyter", marker = "extra == 'jupyter'", specifier = "==1.1.1" },
|
{ name = "jupyter", marker = "extra == 'jupyter'", specifier = "==1.1.1" },
|
||||||
{ name = "openai", marker = "extra == 'openai'", specifier = "==2.21.0" },
|
{ name = "openai", marker = "extra == 'openai'", specifier = "==2.21.0" },
|
||||||
|
{ name = "opentelemetry-instrumentation-django", specifier = "==0.60b1" },
|
||||||
{ name = "paramiko", specifier = "==4.0.0" },
|
{ name = "paramiko", specifier = "==4.0.0" },
|
||||||
{ name = "pillow", specifier = "==12.1.1" },
|
{ name = "pillow", specifier = "==12.1.1" },
|
||||||
{ name = "pip", specifier = "==26.0.1" },
|
{ name = "pip", specifier = "==26.0.1" },
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue