أعلم أنه من خلال وظيفة رد الاتصال ، يمكن للمرء تنفيذ آليته المعقدة لتقرير وقت عرض شريط أدوات تصحيح 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')
لقد دخلت في نفس المشكلة ووافقت مع 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}