私は他の質問を見ましたが、理解できません...
Django-debug-toolbarをインストールするために以下を行いました。
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
に追加しました
愚かな質問ですが、あなたはそれを言及しなかったので... 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 はこの辞書を使用します。
デバッグツールバーは、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が、ツールバーをアクティブにするトリックでした。
他のすべてが問題ない場合は、テンプレートに明示的な終了<body>
タグがないことも考えられます—
注:デバッグツールバーは、応答のmimetypeがtext/htmlまたはapplication/xhtml + xmlであり、終了タグが含まれている場合にのみ表示されます。
現在の安定版0.11.0では、ツールバーを表示するために次の条件が満たされている必要があります。
設定ファイル:
DEBUG = True
INTERNAL_IPS
は、サーバーのアドレスではなく、ブラウザーのIPアドレスを含めます。ローカルでブラウジングする場合は、INTERNAL_IPS = ('127.0.0.1',)
になります。リモートでブラウジングする場合は、 パブリックアドレスを指定してください 。INSTALLED_APPS = (..., 'debug_toolbar',)
MIDDLEWARE_CLASSES = ('debug_toolbar.middleware.DebugToolbarMiddleware', ...)
。リストのできるだけ早く配置する必要があります。テンプレートファイル:
text/html
でなければなりません</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
DEBUG = True
の設定から、クライアントのIPアドレスのINTERNAL_IPS
の設定、さらにDjango Debug Toolbarの手動設定まですべてを試しました(最近のバージョンでは、ミドルウェアとURLの追加)。リモート開発サーバーでは機能しませんでした(ローカルで機能しましたが)。唯一機能したのは、次のようにツールバーを構成することでした。
DEBUG_TOOLBAR_CONFIG = {
"SHOW_TOOLBAR_CALLBACK" : lambda request: True,
}
これは、ツールバーを表示するかどうかを決定するデフォルトのメソッドを置き換え、常にtrueを返します。
ツールバーは完璧に機能しています。この構成では:
DEBUG = True
INTERNAL_IPS = ('127.0.0.1', '192.168.0.1',)
DEBUG_TOOLBAR_CONFIG = {'INTERCEPT_REDIRECTS': False,}
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', )
私はそれが役立つことを願っています
10.0.2.2
をWindowsのINTERNAL_IPSに追加します。これはvagrantで内部的に使用されます
INTERNAL_IPS =('10 .0.2.2 '、)
これは動作するはずです。
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値を表示できます
私は同じ問題を抱えていて、いくつかのグーグルで最終的にそれを解決しました。
INTERNAL_IPSでは、クライアントの IPアドレスが必要です。
ツールバーを非表示のままにできるもう1つのことは、必要な静的ファイルが見つからない場合です。 debug_toolbarテンプレートは{{STATIC_URL}}テンプレートタグを使用するため、静的ツールバーにdebug toolbarというフォルダーが存在することを確認してください。
Collectstatic管理コマンドは、ほとんどのインストールでこれを処理する必要があります。
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'
を追加することで修正しました。 。
以前の回答への追加:
ツールバーが表示されないが、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フォルダーを、設定した静的ファイルフォルダーに手動で移動します。
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',
# ...
]
私の場合、pythonコンパイル済みファイル(*.pyc
)を削除する必要がありました。
これはこの特定の作者には当てはまりませんでしたが、デバッグツールバーが表示されずに苦労しており、指摘されたすべてを実行した後、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', )
私の場合、それはここでまだ言及されていない別の問題でした。ミドルウェアのリストにGZipMiddlewareがありました。
デバッグツールバーの自動構成では、デバッグツールバーのミドルウェアが一番上に表示されるため、gzip圧縮されたHTMLを「見る」だけで、ツールバーを追加することはできません。
開発設定でGZipMiddlewareを削除しました。デバッグツールバーの設定を手動で設定し、ミドルウェアを配置するafter GZipも機能するはずです。
私にとっては、これは明らかにINTERNAL_IPSと一致しなかった127.0.0.1:8000
ではなく、アドレスバーにlocalhost:8000
と入力するのと同じくらい簡単でした。
この問題が発生したため、ソースからデバッグツールバーをインストールする必要がありました。
バージョン1.4には、PureCSSおよび明らかに他のCSSフレームワークを使用すると隠されるという問題があります。
これ はそれを修正するコミットです。
ドキュメントはソースからインストールする方法を説明しています。
テンプレートに終了タグがあることを確認する必要があります。
私の問題は、テンプレートに通常のhtmlタグがなく、コンテンツをプレーンテキストで表示することです。タグがあるbase.htmlからすべてのhtmlファイルを継承することで解決しました。
同じ問題が発生しました。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
私が取り組んでいたコードでは、メインリクエストの処理中に複数の小さなリクエストが行われました(非常に具体的なユースケースです)。それらは同じDjangoのスレッドによって処理されるリクエストでした。 Djangoデバッグツールバー(DjDT)はこの動作を予期せず、最初の応答にDjDTのツールバーを含めてから、スレッドの状態を削除します。したがって、メインリクエストがブラウザに送り返されたとき、DjDTはレスポンスに含まれていませんでした。
教訓:DjDTはスレッドごとに状態を保存します。最初の応答後にスレッドの状態を削除します。
前提条件
「Django.contrib.staticfiles」が適切に設定されていることを確認し、debug_toolbar
をINSTALLED_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
Vagrantを使用しても同じ問題が発生しました。以下の例のように::ffff:192.168.33.1
をINTERNAL_IPSに追加することでこの問題を解決しました。
INTERNAL_IPS = (
'::ffff:192.168.33.1',
)
192.168.33.10
がVagrantfileのプライベートネットワークのIPであることを思い出してください。
私が手に入れたのは時代遅れのブラウザです!
デバッグツールバーからいくつかのスタイルシートをロードし、それがフロントエンドの問題であると推測したことに注意してください。
Pycharm 5を使用している場合-一部のバージョンではテンプレートデバッグが機能しません。 5.0.4で修正、影響を受けるバージョン-5.0.1、5.0.2チェックアウト issue
それを見つけるために多くの時間を費やしてください。たぶん誰かを助けるでしょう