|
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