Django-debug-toolbar: التصفية حسب URL المطلوب

تم إنشاؤها على ٢٩ مايو ٢٠١٢  ·  3تعليقات  ·  مصدر: jazzband/django-debug-toolbar

أعلم أنه من خلال وظيفة رد الاتصال ، يمكن للمرء تنفيذ آليته المعقدة لتقرير وقت عرض شريط أدوات تصحيح Django ومتى لا يتم ذلك ، ولكن يجب أن تكون حالات استخدام التصفية الشائعة (مثل التحقق من IP للمستخدمين) بسيطة قدر الإمكان.

لذلك أقترح خيار تهيئة _تصفية (عدم إظهار) شريط الأدوات على الصفحات التي تتطابق عناوين URL الخاصة بها مع نمط معين_ (أو تعبير عادي). على سبيل المثال ، إذا كنت تستخدم لوحة إدارة Django ، ولكنك لا تطور شيئًا فيها ، فلن تحتاج إلى شريط أدوات التصحيح هناك ، لذلك سيكون من الجيد تصفية شريط الأدوات لجميع الطلبات تحت '^admin/' . تظهر الحاجة نفسها إذا كانت لديك صفحة بها العديد من إطارات iframe الصغيرة وتريد فقط تصحيح أخطاء تطبيق وقوالب Django الخارجية ، وليس تلك الموجودة في إطارات iframes الصغيرة - هنا سيكون من الجيد إخفاء شريط الأدوات في جميع الطلبات إلى تطبيق iframed.

لذلك فإن الاقتراح هو أن يحتوي على تعبير عادي واحد أو أكثر لتصفية المكان الذي يجب أن يظهر فيه شريط الأدوات بناءً على عنوان URL المطلوب. على سبيل المثال ، إما على هيئة regex معقد أو كقائمة من regexes أبسط:

DEBUG_TOOLBAR_CONFIG = ( ... 'HIDE_FILTER_URL': '^admin/|^myapp/someview', ... )
or
DEBUG_TOOLBAR_FILTER_URL = ('^admin/', '^myapp/someview')

ال 3 كومينتر

لقد دخلت في نفس المشكلة ووافقت مع gw0 على اقتراح تنفيذ أنماط التصفية الشائعة لإزالة شريط الأدوات بسرعة من عناوين url المطابقة. مجرد تلميح.

في كلتا الحالتين ، عمل جيد حقًا شريط أدوات التصحيح الشامل. يا رفاق صخرة!

الآن بعد أن تم إصلاح # 324 ، أصبح هذا الأمر سهل التنفيذ حقًا. إليك كيفية استبعاد المسؤول:

from debug_toolbar.middleware import show_toolbar

def custom_show_toolbar(request):
    return show_toolbar(request) and not request.path.startswith('/admin/')

إليك كيفية استبعاد سلسلة من بادئات عناوين URL:

from debug_toolbar.middleware import show_toolbar

excluded_urls = ['/foo', '/bar']

def custom_show_toolbar(request):
    excluded = any(request.path.startswith(url) for url in excluded_urls)
    return show_toolbar(request) and not excluded

لا أعتقد أنه سيكون من الأسهل استخدام DSL لتصفية عناوين URL. Plain Python هي أداة مناسبة لهذه الفئة من المشاكل.

شكرا للاقتراح على أي حال!

بالنسبة لأي شخص آخر يهبط هنا ، يبدو أن السطر from debug_toolbar.middleware import show_toolbar يؤدي إلى إجراء تقييم مبكر لإعدادات Django Debug Toolbars ، مما يعني أن أي تغييرات لاحقة على الإعدادات لن تتم قراءتها. كنت بحاجة إلى إجراء الاستيراد داخل الوظيفة لتفعيل الإعدادات الخاصة بي.

def custom_show_toolbar(request):
    from debug_toolbar.middleware import show_toolbar

    return show_toolbar(request) and not request.path.startswith("/graphql")

DEBUG_TOOLBAR_CONFIG = {"SHOW_TOOLBAR_CALLBACK": custom_show_toolbar}
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات