Django-debug-toolbar: يقوم DjDT بعكس عنوان url قبل تحميل النماذج في urls.py

تم إنشاؤها على ١٤ يناير ٢٠١٤  ·  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"

لقد وضعت pdb قبل ترقيع url في Models.py ، وحصلت على هذا:

/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 ، مما يفرض لاحقًا debug_toolbar.models لعكس عنوان url على الرغم من أن urls.py لا يحتوي على أي عناوين 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

ما زلت أواجه هذه المشكلة حتى بعد إضافة DEBUG_TOOLBAR_PATCH_SETTINGS = خطأ في الإعدادات. py ، هل تريد المزيد من الأفكار؟

+1 @ jonykwa

jonykwa هل حاولت إضافة هذا إلى urls.py لمشروعك؟

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

اضطررت إلى إجراء كلا الاقتراحات من clarkbarz و avelis كجزء من ترقية Django 1.5-> 1.6. شكرا!

فقط لإضافة بعض الأشياء البسيطة للتحقق عندما تحصل على هذا الخطأ. إذا قمت بإضافة عنوان urlpattern قبل أنماط عنوان url الخاصة بك ، فلا تنس أن يكون لديك نمط url الخاص بك مرفقًا:

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

هنا الإعدادات. تم الإعلان عن DDEBUG بعد أنماط عنوان url لموقعي ، ولكن تأكد من أن نمط عنوان url debug يسبق أنماط url site .

كما هو موضح في المستندات لـ 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 التقييمات