|
2 | 2 | The main DebugToolbar class that loads and renders the Toolbar.
|
3 | 3 | """
|
4 | 4 |
|
| 5 | +import re |
5 | 6 | import uuid
|
6 | 7 | from collections import OrderedDict
|
7 | 8 | from functools import lru_cache
|
8 | 9 |
|
9 | 10 | from django.apps import apps
|
| 11 | +from django.conf import settings |
10 | 12 | from django.core.exceptions import ImproperlyConfigured
|
11 | 13 | from django.dispatch import Signal
|
12 | 14 | from django.template import TemplateSyntaxError
|
13 | 15 | from django.template.loader import render_to_string
|
14 |
| -from django.urls import path, resolve |
| 16 | +from django.urls import include, path, re_path, resolve |
15 | 17 | from django.urls.exceptions import Resolver404
|
16 | 18 | from django.utils.module_loading import import_string
|
17 | 19 | from django.utils.translation import get_language, override as lang_override
|
@@ -186,3 +188,27 @@ def observe_request(request):
|
186 | 188 | Determine whether to update the toolbar from a client side request.
|
187 | 189 | """
|
188 | 190 | return True
|
| 191 | + |
| 192 | + |
| 193 | +def debug_toolbar_urls(prefix="__debug__"): |
| 194 | + """ |
| 195 | + Return a URL pattern for serving toolbar in debug mode. |
| 196 | +
|
| 197 | + from django.conf import settings |
| 198 | + from debug_toolbar.toolbar import debug_toolbar_urls |
| 199 | +
|
| 200 | + urlpatterns = [ |
| 201 | + # ... the rest of your URLconf goes here ... |
| 202 | + ] + debug_toolbar_urls() |
| 203 | + """ |
| 204 | + if not prefix: |
| 205 | + raise ImproperlyConfigured("Empty urls prefix not permitted") |
| 206 | + elif not settings.DEBUG: |
| 207 | + # No-op if not in debug mode. |
| 208 | + return [] |
| 209 | + return [ |
| 210 | + re_path( |
| 211 | + r"^%s/" % re.escape(prefix.lstrip("/")), |
| 212 | + include("debug_toolbar.urls"), |
| 213 | + ), |
| 214 | + ] |
0 commit comments