Django-debug-toolbar: μš”μ²­λœ URL둜 필터링

에 λ§Œλ“  2012λ…„ 05μ›” 29일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: jazzband/django-debug-toolbar

콜백 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ Django 디버그 도ꡬ λͺ¨μŒμ„ ν‘œμ‹œν•  λ•Œμ™€ ν‘œμ‹œν•˜μ§€ μ•Šμ„ λ•Œλ₯Ό κ²°μ •ν•˜λŠ” λ³΅μž‘ν•œ λ©”μ»€λ‹ˆμ¦˜μ„ κ΅¬ν˜„ν•  수 μžˆμ§€λ§Œ 일반적인 필터링 μ‚¬μš© 사둀(예: μ‚¬μš©μž IP 확인)λŠ” κ°€λŠ₯ν•œ ν•œ κ°„λ‹¨ν•˜κ²Œ λ§Œλ“€μ–΄μ•Ό ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ URL이 νŠΉμ • νŒ¨ν„΄(λ˜λŠ” μ •κ·œμ‹)κ³Ό μΌμΉ˜ν•˜λŠ” νŽ˜μ΄μ§€μ—μ„œ 도ꡬ λͺ¨μŒμ„ _필터링(ν‘œμ‹œν•˜μ§€ μ•ŠμŒ)ν•˜λŠ” ꡬ성 μ˜΅μ…˜μ„ μ œμ•ˆν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ Django 관리 νŒ¨λ„μ„ μ‚¬μš©ν•˜κ³  μžˆμ§€λ§Œ κ·Έ μ•ˆμ—μ„œ 아무 것도 κ°œλ°œν•˜μ§€ μ•ŠλŠ” 경우 디버그 도ꡬ λͺ¨μŒμ΄ ν•„μš”ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ '^admin/' μ•„λž˜μ˜ λͺ¨λ“  μš”μ²­μ—μ„œ 도ꡬ λͺ¨μŒμ„ ν•„ν„°λ§ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. μž‘μ€ iframe이 λ§Žμ€ νŽ˜μ΄μ§€κ°€ 있고 μž‘μ€ iframe이 μ•„λ‹Œ μ™ΈλΆ€ Django μ•± 및 ν…œν”Œλ¦Ώμ„ λ””λ²„κ·Έν•˜λ €λŠ” κ²½μš°μ—λ„ λ™μΌν•œ μš”κ΅¬ 사항이 λ‚˜νƒ€λ‚©λ‹ˆλ‹€. μ—¬κΈ°μ„œ iframe 앱에 λŒ€ν•œ λͺ¨λ“  μš”μ²­μ—μ„œ 도ꡬ λͺ¨μŒμ„ μˆ¨κΈ°λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ μš”μ²­λœ URL을 기반으둜 도ꡬ λͺ¨μŒμ΄ ν‘œμ‹œλ˜μ–΄μ•Ό ν•˜λŠ” 필터링을 μœ„ν•œ ν•˜λ‚˜ μ΄μƒμ˜ μ •κ·œμ‹μ„ μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ λ³΅μž‘ν•œ μ •κ·œμ‹ λ˜λŠ” 더 κ°„λ‹¨ν•œ μ •κ·œμ‹ λͺ©λ‘:

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

λͺ¨λ“  3 λŒ“κΈ€

λ‚˜λŠ” 같은 λ¬Έμ œμ— μ°©μˆ˜ν–ˆκ³  μΌμΉ˜ν•˜λŠ” URLμ—μ„œ νˆ΄λ°”λ₯Ό λΉ λ₯΄κ²Œ μ œκ±°ν•˜κΈ° μœ„ν•΄ 곡톡 필터링 νŒ¨ν„΄μ˜ κ΅¬ν˜„μ„ μ œμ•ˆν•˜λŠ” 것에 λŒ€ν•΄ gw0에 λ™μ˜ν–ˆμŠ΅λ‹ˆλ‹€. νžŒνŠΈμž…λ‹ˆλ‹€.

μ–΄λŠ μͺ½μ΄λ“ , 정말 ν›Œλ₯­ν•œ 디버그 도ꡬ λͺ¨μŒμž…λ‹ˆλ‹€. λ„ˆν¬λ“€ 락!

이제 #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

URL 필터링에 DSL을 μ‚¬μš©ν•˜λŠ” 것이 더 μ‰¬μšΈ 것이라고 μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. Plain Python은 μ΄λŸ¬ν•œ μ’…λ₯˜μ˜ λ¬Έμ œμ— μ ν•©ν•œ λ„κ΅¬μž…λ‹ˆλ‹€.

μ–΄μ¨Œλ“  μ œμ•ˆ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

여기에 λ°©λ¬Έν•˜λŠ” λ‹€λ₯Έ μ‚¬λžŒμ˜ 경우 from debug_toolbar.middleware import show_toolbar 행이 Django 디버그 도ꡬ λͺ¨μŒμ˜ 섀정에 λŒ€ν•œ 초기 평가λ₯Ό νŠΈλ¦¬κ±°ν•˜λŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. 즉, 섀정에 λŒ€ν•œ 후속 λ³€κ²½ 사항을 읽을 수 μ—†μŠ΅λ‹ˆλ‹€. λ‚΄ 섀정을 μ μš©ν•˜λ €λ©΄ ν•¨μˆ˜ λ‚΄μ—μ„œ κ°€μ Έμ˜€κΈ°λ₯Ό μˆ˜ν–‰ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€.

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 λ“±κΈ‰