์ฒ์์๋ 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์ ๋ฐ์ ์ํค๋๋ก ํฉ๋๋ค.
์ค๋ช ์์ ์ค๋ช ๋ ๋ช ์์ ์ค์ ์ ์ฌ์ฉํ์ญ์์ค. ๋ถํํ๋ ์ด๊ฒ์ 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
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@jonykwa ์ด๊ฒ์ ํ๋ก์ ํธ์ urls.py์ ์ถ๊ฐํด ๋ณด์ จ์ต๋๊น?