web-dev-qa-db-ja.com

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

私は他の質問を見ましたが、理解できません...

Django-debug-toolbarをインストールするために以下を行いました。

  1. pip install 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に追加しました

129
AlexBrand

愚かな質問ですが、あなたはそれを言及しなかったので... DEBUGは何に設定されていますか? Trueでない限りロードされません。

それでも動作しない場合は、INTERNAL_IPSにも「127.0.0.1」を追加してみてください。

UPDATE

これは最後の努力です。haveするべきではありませんが、設定の問題があるだけなのか、もっと大きな問題があるのか​​を明確に示します。

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

def show_toolbar(request):
    return True
SHOW_TOOLBAR_CALLBACK = show_toolbar

これにより、デバッグツールバーによるすべてのチェックが効果的に削除され、それ自体をロードする必要があるかどうかが決定されます。常にロードされます。テスト目的でのみ残してください。忘れて起動した場合、すべての訪問者はデバッグツールバーも見ることができます。

明示的な構成については、公式インストールドキュメント here も参照してください。

編集(2015年6月17日):

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

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

tests はこの辞書を使用します。

162
Chris Pratt

デバッグツールバーは、request.META ['REMOTE_ADDR']のIPアドレスを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が、ツールバーをアクティブにするトリックでした。

78
timothyashaw

他のすべてが問題ない場合は、テンプレートに明示的な終了<body>タグがないことも考えられます—

注:デバッグツールバーは、応答のmimetypeがtext/htmlまたはapplication/xhtml + xmlであり、終了タグが含まれている場合にのみ表示されます。

46
user1569050

現在の安定版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のデフォルトが追加されているため、開発バージョンにバグがあるため、生活が少し簡単になります。 gitの最新バージョンでは、nginx/uwsgiを実行するとImproperlyConfiguredエラーが発生することがわかりました。

いずれにしても、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
25
donturner

DEBUG = Trueの設定から、クライアントのIPアドレスのINTERNAL_IPSの設定、さらにDjango Debug Toolbarの手動設定まですべてを試しました(最近のバージョンでは、ミドルウェアとURLの追加)。リモート開発サーバーでは機能しませんでした(ローカルで機能しましたが)。唯一機能したのは、次のようにツールバーを構成することでした。

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

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

20
Anoyz

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

  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',
)

私はそれが役立つことを願っています

14
César

10.0.2.2をWindowsのINTERNAL_IPSに追加します。これはvagrantで内部的に使用されます

INTERNAL_IPS =('10 .0.2.2 '、)

これは動作するはずです。

12
Bas Koopmans

Docker

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

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


これは、Vagrantなどの他の動的ルーティングの状況でも機能するはずです。


好奇心for盛な人のための詳細を以下に示します。ツールバーを表示するかどうかを決定するDjango_debug_toolのコードは、次のようにREMOTE_ADDRの値を調べます。

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

そのため、動的なdockerルーティングのためにREMOTE_ADDRの値を実際に知らない場合、ツールバーは機能しません。 docker networkコマンドを使用して、docker network inspect my_docker_network_nameなどの動的IP値を表示できます

8
Mark Chackerian

私は同じ問題を抱えていて、いくつかのグーグルで最終的にそれを解決しました。

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

6
Farhan Hafeez

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

Collectstatic管理コマンドは、ほとんどのインストールでこれを処理する必要があります。

4
AgDude

pydanny's 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-debug-toolbar docs で述べられているように、Django 1.7を使用しているので、'debug_toolbar.apps.DebugToolbarConfig'の代わりに'debug_toolbar'を追加することで修正しました。 。

3
metakermit

以前の回答への追加:

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

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

その後、次の方法で修正できます(nginxとApacheの例):

nginx config:

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
Bob

Django 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',
# ...
]
2
Stryker

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

1
dnaranjo

これはこの特定の作者には当てはまりませんでしたが、デバッグツールバーが表示されずに苦労しており、指摘されたすべてを実行した後、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', )

1
Anderson Santos

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

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

開発設定でGZipMiddlewareを削除しました。デバッグツールバーの設定を手動で設定し、ミドルウェアを配置するafter GZipも機能するはずです。

1
RemcoGerlich

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

0
TimStaley

この問題が発生したため、ソースからデバッグツールバーをインストールする必要がありました。

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

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

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

0
Petko M

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

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

0
user1552891

同じ問題が発生しました。Apacheのエラーログを見て解決しました。 mod_wsgiでmac os xで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
Andre Manzano

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

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

0
jozo

前提条件

「Django.contrib.staticfiles」が適切に設定されていることを確認し、debug_toolbarINSTALLED_APPS設定に追加します。

INSTALLED_APPS = [
    # ...
    'Django.contrib.staticfiles',
    # ...
    'debug_toolbar',
]

STATIC_URL = '/static/'

URLconf

次のように、プロジェクトのURLconfにデバッグツールバーのURLを追加します。

from Django.conf import settings
from Django.conf.urls import include, url  # For Django versions before 2.0
from Django.urls import include, path  # For Django versions from 2.0 and up

if settings.DEBUG:
    import debug_toolbar
    urlpatterns = [
        path('__debug__/', include(debug_toolbar.urls)),

        # For Django versions before 2.0:
        # url(r'^__debug__/', include(debug_toolbar.urls)),

    ] + urlpatterns

ミドルウェア

デバッグツールバーは、主にミドルウェアに実装されています。次のように設定モジュールで有効にします。

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

古いスタイルのミドルウェア:

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

内部IP

デバッグツールバーは、IPがINTERNAL_IPS設定にリストされている場合にのみ表示されます。 (このロジックはSHOW_TOOLBAR_CALLBACKオプションで変更できます。)ローカル開発の場合は、INTERNAL_IPSに「127.0.0.1」を追加する必要があります。

その後、動作します。また、リンクを確認してください https://Django-debug-toolbar.readthedocs.io/en/latest/installation.html

0
copy channel

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

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

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

0
Adriano Silva

私が手に入れたのは時代遅れのブラウザです!

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

0
ogurets

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

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

0
wolendranh