Django-debug-toolbar: Memfilter menurut URL yang diminta

Dibuat pada 29 Mei 2012  ·  3Komentar  ·  Sumber: jazzband/django-debug-toolbar

Saya tahu bahwa dengan fungsi panggilan balik seseorang dapat mengimplementasikan mekanisme kompleksnya sendiri untuk memutuskan kapan harus menampilkan Bilah Alat Debug Django dan kapan tidak, tetapi kasus penggunaan penyaringan umum (seperti memeriksa IP pengguna) harus dibuat sesederhana mungkin.

Oleh karena itu saya menyarankan opsi konfigurasi untuk _memfilter (tidak menampilkan) bilah alat pada halaman yang URL-nya cocok dengan pola tertentu_ (atau ekspresi reguler). Misalnya jika Anda menggunakan panel admin Django, tetapi tidak mengembangkan apa pun di dalamnya, Anda tidak memerlukan bilah alat debug di sana, jadi akan menyenangkan untuk memfilter bilah alat pada semua permintaan di bawah '^admin/' . Kebutuhan yang sama muncul jika Anda memiliki halaman dengan banyak iframe kecil dan Anda hanya ingin men-debug aplikasi dan templat Django di luar, bukan yang ada di iframe kecil - di sini akan menyenangkan untuk menyembunyikan bilah alat pada semua permintaan ke aplikasi beriframe.

Oleh karena itu, disarankan untuk memiliki satu atau lebih ekspresi reguler untuk memfilter di mana bilah alat harus ditampilkan berdasarkan URL yang diminta. Misalnya sebagai regex kompleks atau sebagai daftar regex yang lebih sederhana:

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

Semua 3 komentar

Saya melangkah ke masalah yang sama dan setuju dengan gw0 dalam menyarankan penerapan pola pemfilteran umum untuk menghapus bilah alat dengan cepat dari url yang cocok. Hanya sebuah petunjuk.

Either way, pekerjaan yang sangat bagus untuk bilah alat debug yang hebat. Kalian keren!

Sekarang #324 telah diperbaiki, ini menjadi sangat mudah untuk diterapkan. Berikut cara mengecualikan admin:

from debug_toolbar.middleware import show_toolbar

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

Berikut cara mengecualikan serangkaian awalan 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

Saya tidak berpikir akan lebih mudah menggunakan DSL untuk memfilter URL. Plain Python adalah alat yang cocok untuk kelas masalah ini.

Terima kasih atas sarannya!

Bagi siapa pun yang mendarat di sini, tampaknya bahwa baris from debug_toolbar.middleware import show_toolbar memicu evaluasi awal dari pengaturan Django Debug Toolbars, yang berarti bahwa setiap perubahan selanjutnya pada pengaturan tidak akan dibaca. Saya perlu melakukan impor di dalam fungsi agar pengaturan saya berlaku.

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}
Apakah halaman ini membantu?
0 / 5 - 0 peringkat