コールバック関数を使用すると、Djangoデバッグツールバーを表示するタイミングと表示しないタイミングを決定する独自の複雑なメカニズムを実装できることを知っていますが、一般的なフィルタリングのユースケース(ユーザーのIPのチェックなど)はできるだけ単純にする必要があります。
したがって、URLが特定のパターン(または正規表現)に一致するページのツールバーを_フィルターで除外(表示しない)する構成オプションをお勧めします。 たとえば、Django管理パネルを使用しているが、その中で何も開発していない場合は、デバッグツールバーは必要ないため、 '^admin/'
下にあるすべてのリクエストでツールバーを除外すると便利です。 小さなiframeが多数あるページがあり、小さなiframe内のものではなく、外部のDjangoアプリとテンプレートをデバッグしたい場合にも、同じニーズが発生します。ここでは、iframedアプリへのすべてのリクエストでツールバーを非表示にすると便利です。
したがって、要求されたURLに基づいてツールバーを表示する場所をフィルタリングするための1つ以上の正規表現を用意することをお勧めします。 たとえば、複雑な正規表現として、またはより単純な正規表現のリストとして:
DEBUG_TOOLBAR_CONFIG = ( ... 'HIDE_FILTER_URL': '^admin/|^myapp/someview', ... )
or
DEBUG_TOOLBAR_FILTER_URL = ('^admin/', '^myapp/someview')
私は同じ問題に踏み込み、一致する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を使用する方が簡単だとは思いません。 プレーン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}