Django-debug-toolbar: DjDT๋Š” ๋ชจ๋ธ์ด urls.py์— ๋กœ๋“œ๋˜๊ธฐ ์ „์— URL์„ ๋’ค์ง‘์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2014๋…„ 01์›” 14์ผ  ยท  8์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: jazzband/django-debug-toolbar

์ฒ˜์Œ์—๋Š” Django Debug Toolbar ๋ฐ uwsgi๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

NoReverseMatch at /

u'djdt' is not a registered namespace

์ด๊ฒƒ์€ ๋ชจ๋ธ์„ ๋ฏธ๋ฆฌ ๋กœ๋“œํ•˜์ง€ ์•Š๋Š” uwsgi์—์„œ ๋จผ์ € ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— django runserver๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŒจ์น˜ํ•˜์—ฌ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

diff --git a/django/core/management/commands/runserver.py b/django/core/management/commands/runserver.py
index 391e0b4..02dadc7 100644
--- a/django/core/management/commands/runserver.py
+++ b/django/core/management/commands/runserver.py
@@ -89,7 +89,7 @@ class Command(BaseCommand):
         quit_command = (sys.platform == 'win32') and 'CTRL-BREAK' or 'CONTROL-C'

         self.stdout.write("Validating models...\n\n")
-        self.validate(display_num_errors=True)
+        #self.validate(display_num_errors=True)
         self.stdout.write((
             "%(started_at)s\n"
             "Django version %(version)s, using settings %(settings)r\n"

๋‚˜๋Š” models.py์—์„œ url ํŒจ์น˜ ์ „์— pdb๋ฅผ ๋„ฃ์—ˆ๊ณ  ๋‹ค์Œ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

/usr/lib64/python2.7/threading.py(784)__bootstrap()
-> self.__bootstrap_inner()
  /usr/lib64/python2.7/threading.py(811)__bootstrap_inner()
-> self.run()
  /usr/lib64/python2.7/threading.py(764)run()
-> self.__target(*self.__args, *self.__kwargs)
  /usr/lib64/python2.7/SocketServer.py(593)process_request_thread()
-> self.finish_request(request, client_address)
  /usr/lib64/python2.7/SocketServer.py(334)finish_request()
-> self.RequestHandlerClass(request, client_address, self)
  django/core/servers/basehttp.py(150)__init__()
-> super(WSGIRequestHandler, self).__init__(*args, **kwargs)
  /usr/lib64/python2.7/SocketServer.py(649)__init__()
-> self.handle()
  /usr/lib64/python2.7/wsgiref/simple_server.py(124)handle()
-> handler.run(self.server.get_app())
  /usr/lib64/python2.7/wsgiref/handlers.py(85)run()
-> self.result = application(self.environ, self.start_response)
  django/contrib/staticfiles/handlers.py(72)__call__()
-> return self.application(environ, start_response)
  django/core/handlers/wsgi.py(255)__call__()
-> response = self.get_response(request)
  django/core/handlers/base.py(103)get_response()
-> resolver_match = resolver.resolve(request.path_info)
  django/core/urlresolvers.py(319)resolve()
-> for pattern in self.url_patterns:
  django/core/urlresolvers.py(347)url_patterns()
-> patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  django/core/urlresolvers.py(342)urlconf_module()
-> self._urlconf_module = import_module(self.urlconf_name)
  django/utils/importlib.py(35)import_module()
-> __import__(name)
  project/urls.py(5)<module>()
-> admin.autodiscover()
  mezzanine/boot/__init__.py(76)autodiscover()
-> django_autodiscover(*args, **kwargs)
  django/contrib/admin/__init__.py(29)autodiscover()
-> import_module('%s.admin' % app)
  django/utils/importlib.py(35)import_module()
-> __import__(name)
  django/contrib/auth/admin.py(179)<module>()
-> admin.site.register(Group, GroupAdmin)
  mezzanine/boot/lazy_admin.py(22)register()
-> super(LazyAdminSite, self).register(*args, **kwargs)
  django/contrib/admin/sites.py(98)register()
-> validate(admin_class, model)
  django/contrib/admin/validation.py(22)validate()
-> models.get_apps()
  django/db/models/loading.py(134)get_apps()
-> self._populate()
  django/db/models/loading.py(72)_populate()
-> self.load_app(app_name, True)
  django/db/models/loading.py(96)load_app()
-> models = import_module('.models', app_name)
  django/utils/importlib.py(35)import_module()
-> __import__(name)
  debug_toolbar/models.py(63)<module>()
-> patch_root_urlconf()
> debug_toolbar/models.py(51)patch_root_urlconf()
-> reverse('djdt:render_panel')
(Pdb) reverse('djdt:render_panel')
** ImproperlyConfigured: The included urlconf project.urls doesn't have any patterns in it

admin.autodiscover()๊ฐ€ urls.py์— ๋ชจ๋ธ์„ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด urls.py์— ์•„์ง URL์ด ์—†์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  debug_toolbar.models๊ฐ€ URL์„ ๋ฐ˜์ „์‹œํ‚ค๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@jonykwa ์ด๊ฒƒ์„ ํ”„๋กœ์ ํŠธ์˜ urls.py์— ์ถ”๊ฐ€ํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ?

if settings.DEBUG:
    import debug_toolbar
    urlpatterns += patterns('',
        url(r'^__debug__/', include(debug_toolbar.urls)),
    )

๋ชจ๋“  8 ๋Œ“๊ธ€

์„ค๋ช…์„œ์— ์„ค๋ช…๋œ ๋ช…์‹œ์  ์„ค์ •์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๋ถˆํ–‰ํžˆ๋„ ์ด๊ฒƒ์€ Django 1.7์ด ์ถœ์‹œ๋  ๋•Œ๊นŒ์ง€ ๋งŒ์กฑ์Šค๋Ÿฝ๊ฒŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•œ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž: ๋‹ค์Œ์€ ๋ช…์‹œ์  ์„ค์ •์— ๋Œ€ํ•œ ๋งํฌ์ž…๋‹ˆ๋‹ค. http://django-debug-toolbar.readthedocs.org/en/1.0/installation.html#explicit -setup

๋‚ด settings.py์— DEBUG_TOOLBAR_PATCH_SETTINGS = False๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„์—๋„ ์ด ๋ฌธ์ œ๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์•„์ด๋””์–ด๊ฐ€ ๋” ์žˆ์Šต๋‹ˆ๊นŒ?

+1 @jonykwa

@jonykwa ์ด๊ฒƒ์„ ํ”„๋กœ์ ํŠธ์˜ urls.py์— ์ถ”๊ฐ€ํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ?

if settings.DEBUG:
    import debug_toolbar
    urlpatterns += patterns('',
        url(r'^__debug__/', include(debug_toolbar.urls)),
    )

Django 1.5->1.6 ์—…๊ทธ๋ ˆ์ด๋“œ์˜ ์ผ๋ถ€๋กœ @clarkbarz ์™€ @avelis์˜ ์ œ์•ˆ์„ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”!

์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํ™•์ธํ•  ๋ช‡ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ณ ์œ ํ•œ URL ํŒจํ„ด ์•ž์— urlpattern์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ ๊ณ ์œ ํ•œ urlpattern์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

if settings.DEBUG:
    import debug_toolbar
    urlpatterns += [
        url(r'^__debug__/', include(debug_toolbar.urls)),
    ]
urlpatterns += [  # DON'T FORGET THE '+=' HERE!
.....  
]

์—ฌ๊ธฐ settings.DEBUG๋Š” ๋‚ด ์‚ฌ์ดํŠธ URL ํŒจํ„ด ๋’ค์— ์„ ์–ธ๋˜์ง€๋งŒ debug URL ํŒจํ„ด์ด site URL ํŒจํ„ด ์•ž์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

URLConf์— ๋Œ€ํ•œ ๋ฌธ์„œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด http://django-debug-toolbar.readthedocs.io/en/stable/installation.html#urlconf

from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings


urlpatterns = [
    url(r'^tinymce/', include('tinymce.urls')),
    url(r'^admin/', admin.site.urls),
]

if settings.DEBUG:
    import debug_toolbar
    urlpatterns = [
        url(r'^__debug__/', include(debug_toolbar.urls)),
    ] + urlpatterns
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰