Laravel では dd( ) コマンドを使ってクラスや変数の内容をブラウザに書き出してアプリケーションの実行を停止することができた.Django では dd( ) のような関数は準備されていないようで,デバッグツールバーをインストールする必要がある(参考).まず,Anaconda プロンプトで次のようなコマンドを実行して django-debug-tollbar をインストールする.なお,Mac では pip list | find "debug"
の代わりに pip list | grep debug
を使用すると良い.
(py39) C:\Users\lecture\Documents\django\django_comment>pip list | find "django-debug" ⏎ (py39) C:\Users\lecture\Documents\django\django_comment>pip install django-debug-toolbar Collecting django-debug-toolbar ⏎ Downloading django_debug_toolbar-3.5.0-py3-none-any.whl (220 kB) |████████████████████████████████| 220 kB 3.3 MB/s Requirement already satisfied: sqlparse>=0.2.0 in c:\users\lecture\anaconda3\envs\py39\lib\site-packages (from django-debug-toolbar) (0.4.2) Requirement already satisfied: Django>=3.2 in c:\users\lecture\anaconda3\envs\py39\lib\site-packages (from django-debug-toolbar) (4.0.6) Requirement already satisfied: tzdata in c:\users\lecture\anaconda3\envs\py39\lib\site-packages (from Django>=3.2->django-debug-toolbar) (2022.1) Requirement already satisfied: asgiref<4,>=3.4.1 in c:\users\lecture\anaconda3\envs\py39\lib\site-packages (from Django>=3.2->django-debug-toolbar) (3.5.2) Installing collected packages: django-debug-toolbar Successfully installed django-debug-toolbar-3.5.0 (py39) C:\Users\lecture\Documents\django\django_comment>pip list | find "django-debug" ⏎ django-debug-toolbar 3.5.0 (py39) C:\Users\lecture\Documents\django\django_comment>
django_comment/settings.py に登録する.
django_comment/settings.py (抜粋)
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True # ここが True になっていることを確認
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'comments.apps.CommentsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'debug_toolbar',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware',
]
INTERNAL_IPS = ("127.0.0.1",)
ROOT_URLCONF = 'django_comment.urls'
次に,django_comment/urls.py に登録する.
django_comment/urls.py (抜粋)
# from django.contrib import admin
from django.urls import path
from django.urls import include
from . import settings
urlpatterns = [
path('', include('comments.urls')),
# path('admin/', admin.site.urls),
]
if settings.DEBUG:
import debug_toolbar
urlpatterns.append(path("", include(debug_toolbar.urls)))
Webサーバを起動して,任意のページをブラウザで表示すると,画面右側にデバッグツールが表示される.
(py39) C:\Users\lecture\Documents\django\django_comment>python manage.py runserver ⏎
Watching for file changes with StatReloader
Performing system checks...
たとえば,デバッグツールバーの「SQL」をクリックすると,実行されたSQLの詳細などが確認できる.
なお,デバッグツールバーの使用を一時的に停止したい場合は,django_comment/settings.py の次の2箇所をコメントアウトすると良い.
django_comment/settings.py (抜粋)
# Application definition
INSTALLED_APPS = [
'comments.apps.CommentsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 'debug_toolbar',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
# 'debug_toolbar.middleware.DebugToolbarMiddleware',
]