django-debug-toolbarが表示されない


132

他の質問を見て、それがわからない...

私はdjango-debug-toolbarをインストールするために次のことを行いました:

  1. ピップインストールdjango-debug-toolbar
  2. ミドルウェアクラスに追加:
MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    # Uncomment the next line for simple clickjacking protection:
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'debug_toolbar.middleware.DebugToolbarMiddleware',
)

3 INTERNAL_IPSを追加:

INTERNAL_IPS =( '174.121.34.187'、)

4インストールされたアプリにdebug_toolbarを追加

エラーなどは発生せず、ツールバーも管理者でさえ、どのページにも表示されません。

debug_toolbarテンプレートのディレクトリも追加しました TEMPLATE_DIRS


9
Vagrantを使用してINTERNAL_IPSいる場合は、正しいことを確認してください。確認する1つの方法は、ビューでを印刷しrequest.META['REMOTE_ADDR']、それをに追加することINTERNAL_IPSです。
ウィル

1
これは誰かを助けるかもしれません。'*'内部IPを追加して試してみましたが、機能しません。特定のIPを入力する必要があります。
Luv33preet

私のsettings.pyでは、MIDDLEWARE_CLASSESではなくMIDDLEWAREのみになりました
bertie

回答:


174

ばかげた質問ですが、あなたはそれについて言及しなかったので...何にDEBUG設定されていますか?でない限り、読み込まれませんTrue

それでも機能しない場合は、「127.0.0.1」も追加してみてくださいINTERNAL_IPS

更新

これは最後の努力であり、そうする必要はありません、構成上の問題があるのか​​、それともより大きな問題があるのか​​が明確に示されます。

以下をsettings.pyに追加します。

def show_toolbar(request):
    return True
SHOW_TOOLBAR_CALLBACK = show_toolbar

これにより、デバッグツールバーによるすべてのチェックが効果的に削除され、それ自体が読み込まれるかどうかを判断します。常に読み込まれます。テスト目的でのみそれを残してください、それを忘れて起動した場合、すべてのビジターはデバッグツールバーも見ることができます。

明示的な設定については、こちらの公式インストールドキュメントもご覧ください。

編集(2015年6月17日):

どうやら核オプションの構文が変更されました。現在は独自の辞書にあります。

def show_toolbar(request):
    return True
DEBUG_TOOLBAR_CONFIG = {
    "SHOW_TOOLBAR_CALLBACK" : show_toolbar,
}

彼らのテストはこの辞書を使用しています。


3
ええ、ですから、もっと大きな問題がここで起こっています。それ以外のものを使用している場合はrunserver、必ず再起動してください。ヘック、再起動runserverも。settings.pyへの変更が実際に保存/コミットされたことを確認してください。* .pycファイルを削除してみてください。* nixではfind . -name "*.pyc" -exec rm {} \;、プロジェクトルートから簡単に実行できます。最後に、実行python manage.py shellして実行from django.conf import settingsし、の値を確認しますsettings.INSTALLED_APPs
クリスプラット

3
最後の質問の意味がわかりませんが、を参照している場合INTERNAL_IPS、これらはサーバー(Django)ではなくクライアント用です。言い換えれば、あなたは中に入れて、あなたのように、IPアドレスを使用すると、デバッグツールバー、サイトは上で動作していることができるものをIPに関係なく見ることができます。
Chris Pratt

10
INTERNAL_IPSも私を助けてくれました。情報をありがとう
Lee

12
またはSHOW_TOOLBAR_CALLBACK = lambda x: True
John Mee 2013年

6
@schillingtはい、お詫び申し上げます。私はcollectstaticすべてを表示させるために走らなければならなかったと思います。
Rob Grant

80

デバッグツールバーでは、リクエスト内のIPアドレスが必要です。META['REMOTE_ADDR']をINTERNAL_IPS設定で設定します。次のようなビューの1つでprintステートメントをスローします。

print("IP Address for debug-toolbar: " + request.META['REMOTE_ADDR'])

そして、そのページをロードします。IPがsettings.pyのINTERNAL_IPS設定にあることを確認します。

通常は、コンピューターのIPアドレスを見れば簡単にアドレスを判別できると思いますが、私の場合は、ポート転送を備えた仮想ボックスでサーバーを実行しています。VBや自分のOSのifconfigのどこにも表示されていませんが、REMOTE_ADDRキーに表示されたIPが、ツールバーをアクティブにするトリックでした。


2
nginxプロキシパススルーを介してページにアクセスしていたため、remote_addrは実際のIPではなくプロキシでした。にプロキシIPアドレスを追加する必要があり、機能INTERNAL_IPSし始めました。
カート

1
VirtualBoxのゲストマシンから、ホストマシンが10.0.0.2と表示されます。:)
mrmuggles


3
dockerでは、REMOTE_ADDRは想定していたものではありませんでした。
アーロンマクミリン2017年


28

現在の安定バージョン0.11.0では、ツールバーを表示するために次の条件が満たされている必要があります。

設定ファイル:

  1. DEBUG = True
  2. INTERNAL_IPSサーバーアドレスではなく、ブラウザのIPアドレスを含めます。ローカルでブラウジングしている場合、これはになるはずですINTERNAL_IPS = ('127.0.0.1',)。リモートで閲覧する場合は、パブリックアドレスを指定してください
  3. インストールするdebug_toolbarアプリ INSTALLED_APPS = (..., 'debug_toolbar',)
  4. 追加するデバッグツールバーミドルウェアクラス、つまりMIDDLEWARE_CLASSES = ('debug_toolbar.middleware.DebugToolbarMiddleware', ...)。リストのできるだけ早い位置に配置する必要があります。

テンプレートファイル:

  1. タイプでなければなりません text/html
  2. 終了</html>タグが必要です

静的ファイル:

静的コンテンツを提供している場合は、次のようにしてcss、js、htmlを収集してください。

./manage.py collectstatic 


django-debug-toolbarの今後のバージョンに関する注意

新しい開発バージョンでは、設定ポイント2、3、および4のデフォルトが追加されています。これにより、開発が少し単純になりますが、どの開発バージョンにもバグがあります。ImproperlyConfigurednginx / uwsgiを実行すると、gitの最新バージョンでエラーが発生することがわかりました。

どちらの方法でも、githubから最新バージョンをインストールする場合は、次のコマンドを実行します。

pip install -e git+https://github.com/django-debug-toolbar/django-debug-toolbar.git#egg=django-debug-toolbar 

次のようにして、特定のコミットのクローンを作成することもできます。

pip install -e git+https://github.com/django-debug-toolbar/django-debug-toolbar.git@ba5af8f6fe7836eef0a0c85dd1e6d7418bc87f75#egg=django_debug_toolbar

2
実際にはその<body> </ body>タグは不要です</ html>
Zgr3doo

20

DEBUG = True設定INTERNAL_IPSからクライアントのIPアドレスの設定まで、Djangoデバッグツールバーを手動で構成することまで、すべてを試しました(最近のバージョンでは、ミドルウェアやURLの追加など、すべての構成が自動的に行われることに注意してください)。リモート開発サーバーでは何も機能しませんでした(ローカルでは機能しましたが)。機能したのは、ツールバーを次のように構成することだけです。

DEBUG_TOOLBAR_CONFIG = {
    "SHOW_TOOLBAR_CALLBACK" : lambda request: True,
}

これは、ツールバーを表示するかどうかを決定するデフォルトのメソッドを置き換え、常にtrueを返します。


16

Docker

Djangoサーバーを使用して開発している場合 Dockerを備え Dockerコンテナで、ツールバーを有効にする手順は機能しません。その理由は、追加する必要がある実際のアドレスがINTERNAL_IPS、172.24.0.1のような動的なものになるという事実に関連しています。の値を動的に設定しようとするのではなくINTERNAL_IPS、簡単な解決策はsettings.py、たとえばのツールバーを有効にする関数を置き換えることです:

DEBUG_TOOLBAR_CONFIG = {
    'SHOW_TOOLBAR_CALLBACK': lambda _request: DEBUG
}


これは、浮浪者のような他の動的ルーティング状況でも機能するはずです。


好奇心旺盛な方のために、もう少し詳しく説明します。ツールバーを表示するかどうかを決定するdjango_debug_toolのコードは、次のREMOTE_ADDRような値を調べます。

if request.META.get('REMOTE_ADDR', None) not in INTERNAL_IPS:
       return False

したがってREMOTE_ADDR、動的なDockerルーティングのために実際にの値がわからない場合、ツールバーは機能しません。docker networkコマンドを使用して、動的IP値を確認できます。次に例を示します。docker network inspect my_docker_network_name


15

ツールバーは完璧に機能しています。この構成では:

  1. DEBUG = True
  2. INTERNAL_IPS = ('127.0.0.1', '192.168.0.1',)
  3. DEBUG_TOOLBAR_CONFIG = {'INTERCEPT_REDIRECTS': False,}
  4. ミドルウェアはの最初の要素ですMIDDLEWARE_CLASSES
MIDDLEWARE_CLASSES = (
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

それが役に立てば幸い


2
おそらく回答からIPアドレスを編集する必要があります。最近ではほとんどの人がブロードバンドを運用しており、ほとんどのブロードバンド接続でIPアドレスが変更されることはほとんどありません。あなたはおそらくそれがインターウェブにぶらぶらしたくないでしょう。
Chris Pratt

192.168。*。*は、ルーターによってコンピューターに割り当てられた内部ローカルIPアドレスです。外部IPアドレスが異なります。
Robeezy 2013年

@rpodだからこそ、誰かがそれを編集しました。
Yuji 'Tomita' Tomita

あなたの代わりに中MIDDLEWARE_CLASSESに追加の、一つの真の設定ファイルを使用して、とだけdev内デバッグツールバーを希望している場合はbase.py、あなた、あなたにこれを追加することがありますlocal.pyMIDDLEWARE_CLASSES = ('debug_toolbar.middleware.DebugToolbarMiddleware',) + MIDDLEWARE_CLASSES
Rob Grant、

12

10.0.2.2WindowsのINTERNAL_IPSに追加します。内部的にVagrantと共に使用されます

INTERNAL_IPS =('10 .0.2.2 '、)

これはうまくいくはずです。


1
これにより、OSXでVagrantを使用して問題が解決したことを確認しました。
Josh

これは最も正確で最も可能性の高い解決策であり、最も単純な解決策
です。Windows7でvagrant

6

私は同じ問題を抱えていましたが、グーグルでやっと解決しました。

INTERNAL_IPSでは、クライアントの IPアドレスが必要です。


4

ツールバーが非表示のままになるもう1つの原因は、必要な静的ファイルが見つからない場合です。debug_toolbarテンプレートは{{STATIC_URL}}テンプレートタグを使用するため、デバッグツールバーと呼ばれる静的ファイルにフォルダーがあることを確認してください。

collectstatic管理コマンドは、ほとんどのインストールでこれを処理します。


3

私はpydannyのcookiecutter-djangoから設定を試してみましたが、それは私にとってはうまくいきました:

# django-debug-toolbar
MIDDLEWARE_CLASSES = Common.MIDDLEWARE_CLASSES + ('debug_toolbar.middleware.DebugToolbarMiddleware',)
INSTALLED_APPS += ('debug_toolbar',)

INTERNAL_IPS = ('127.0.0.1',)

DEBUG_TOOLBAR_CONFIG = {
    'DISABLE_PANELS': [
        'debug_toolbar.panels.redirects.RedirectsPanel',
    ],
    'SHOW_TEMPLATE_CONTEXT': True,
}
# end django-debug-toolbar

私はDjango 1.7を使用しているので、公式のdjango-debug-toolbar docsに記載されている'debug_toolbar.apps.DebugToolbarConfig'代わりに追加することで変更しました。'debug_toolbar'


2

以前の回答への追加:

ツールバーは表示されないが、htmlに読み込まれる場合(ブラウザーでサイトのhtmlを確認し、下にスクロール)

デバッグツールバーの静的ファイルが見つからないことが問題である可能性があります(これは、サイトのアクセスログでも確認できます。たとえば、/ static / debug_toolbar / js / toolbar.jsの404エラー)

次の方法で修正できます(nginxとapacheの例):

nginx設定:

location ~* ^/static/debug_toolbar/.+.(ico|css|js)$ {
    root [path to your python site-packages here]/site-packages/debug_toolbar;
}

Apache設定:

Alias /static/debug_toolbar [path to your python site-packages here]/site-packages/debug_toolbar/static/debug_toolbar

または:

manage.py collectstatic

ここでcollectstaticの詳細: https //docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#collectstatic

または、debug_toolbar静的ファイルのdebug_toolbarフォルダーを、設定した静的ファイルフォルダーに手動で移動します


2

私の場合、ここではまだ触れられていない別の問題でした。ミドルウェアのリストにGZipMiddlewareがありました。

デバッグツールバーの自動設定では、デバッグツールバーのミドルウェアが一番上に配置されるため、gzip圧縮されたHTMLが「表示」されるだけで、ツールバーを追加できません。

開発設定からGZipMiddlewareを削除しました。デバッグツールバーの設定を手動でセットアップし、GZipのにミドルウェアを配置することもできます。


でビューレベルでGZipを有効にしてもgzip_page、ツールバーは非表示になります。docs.djangoproject.com/en/2.0/topics/http/decorators/...
Brachamul

2

私の場合、Pythonコンパイル済みファイル(*.pyc)を削除する必要がありました


このコメントをありがとう、それは私に今朝の精神的な故障を救いました。他のすべてが正しいようであり、このプロジェクトが以前はうまく機能していた場合は、これを試して、問題が解決するかどうかを確認してください。DDT HTML / JSがページにありましたが、すべて問題なく見えましたが、実際には表示されませんでした。Pycファイルをクリアすると、再び表示され始めました
シェーン

2

ジャンゴ1.8.5:

デバッグツールバーを表示するには、プロジェクトのurl.pyファイルに以下を追加する必要がありました。その後、デバッグツールバーが表示されます。

 from django.conf.urls import include
 from django.conf.urls import patterns
 from django.conf import settings


  if settings.DEBUG:
      import debug_toolbar
      urlpatterns += patterns('',
              url(r'^__debug__/', include(debug_toolbar.urls)),
              )

django 1.10:以降:

from django.conf.urls import include, url
from django.conf.urls import patterns
from django.conf import settings


if settings.DEBUG:

  import debug_toolbar
  urlpatterns =[
         url(r'^__debug__/', include(debug_toolbar.urls)),
         ] + urlpatterns

また、ミドルウェアにdebug_toolbarを含めることを忘れないでください。デバッグツールバーは、主にミドルウェアに実装されています。次のように設定モジュールで有効にします:(django新しいバージョン)


MIDDLEWARE = [
# ...
'debug_toolbar.middleware.DebugToolbarMiddleware',
#

古いスタイルのミドルウェア:(ミドルウェアに_CLASSESキーワークが必要です)

MIDDLEWARE_CLASSES = [
# ...
'debug_toolbar.middleware.DebugToolbarMiddleware',
# ...
]

1

これはこの特定の作者には当てはまりませんでしたが、デバッグツールバーが表示されないことに苦労しており、指摘されたすべてを実行した後、MIDDLEWAREの注文に問題があることがわかりました。したがって、ミドルウェアをリストの早い段階で配置することで機能する可能性があります。私が最初です:

MIDDLEWARE_CLASSES = ( 'debug_toolbar.middleware.DebugToolbarMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'dynpages.middleware.DynpageFallbackMiddleware', 'utils.middleware.UserThread', )


0

テンプレートに終了タグがあることを確認する必要があります。

私の問題は、テンプレートに通常のHTMLタグがないことです。コンテンツをプレーンテキストで表示するだけです。タグのあるbase.htmlからすべてのhtmlファイルを継承することで解決しました。


0

私にとっては、これは127.0.0.1:8000アドレスバーに入力するのと同じくらい簡単localhost:8000でしたが、INTERNAL_IPSと一致しないようでした。


0

同じ問題が発生しました。Apacheのエラーログを見て解決しました。mac os xでmod_wsgiを使用してApacheを実行しました。debug_toolbarのtampleteフォルダーがロードされていませんでした。

ログのサンプル:

==> /private/var/log/apache2/dummy-host2.example.com-error_log <==
[Sun Apr 27 23:23:48 2014] [error] [client 127.0.0.1] File does not exist: /Library/WebServer/Documents/rblreport/rbl/static/debug_toolbar, referer: http://127.0.0.1/

==> /private/var/log/apache2/dummy-host2.example.com-access_log <==
127.0.0.1 - - [27/Apr/2014:23:23:48 -0300] "GET /static/debug_toolbar/css/toolbar.css HTTP/1.1" 404 234 "http://127.0.0.1/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:28.0) Gecko/20100101 Firefox/28.0"

この行をVirtualHostファイルに追加するだけです。

Alias /static/debug_toolbar /Library/Python/2.7/site-packages/debug_toolbar/static/debug_toolbar
  • もちろん、Pythonパスを変更する必要があります

0

Vagrantを使用しても同じ問題が発生しました。::ffff:192.168.33.1以下の例のようにINTERNAL_IPSに追加することでこの問題を解決しました。

INTERNAL_IPS = (
    '::ffff:192.168.33.1',
)

それ192.168.33.10がVagrantfileの私のプライベートネットワークのIPであることを思い出してください。


0

私はこの問題を抱えており、ソースからデバッグツールバーをインストールする必要がありました。

バージョン1.4には、PureCSSおよび明らかに他のCSSフレームワークを使用すると非表示になるという問題があります。

これはそれを修正するコミットです。

ドキュメントはソースからインストールする方法を説明しています。


0

Pycharm 5を使用している人のために-一部のバージョンではテンプレートデバッグが機能しません。5.0.4で修正、影響を受けるバージョン-5.0.1、5.0.2チェックアウトの問題

それを見つけるためにたくさんの時間を費やしてください。多分誰かを助けるでしょう


0

私が取り組んでいるコードでは、メインリクエストの処理中に複数の小さなリクエストが行われました(これは非常に特殊なユースケースです)。それらは同じDjangoのスレッドによって処理されるリクエストでした。Djangoデバッグツールバー(DjDT)はこの動作を想定しておらず、DjDTのツールバーを最初の応答に含めてから、スレッドの状態を削除します。そのため、メインのリクエストがブラウザに送り返されたとき、DjDTはレスポンスに含まれていませんでした。

学んだ教訓:DjDTはスレッドごとの状態を保存します。最初の応答の後、スレッドの状態を削除します。


0

私の元になったのは古いブラウザです!

デバッグツールバーからいくつかのスタイルシートをロードし、それがフロントエンドの問題である可能性があると推測したことに注意してください。


-1

ばかげたことの1つに私は気づきました。Apachewsgiを使用する場合は、必ず.wsgiファイルに触れて、コードを強制的に再コンパイルしてください。愚かなエラーをデバッグするために私の時間の20分を無駄にしてください:(

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.