目录
- 1、安装Django Debug Toolbar
Django的一个优势就是有丰富的第三方包生态系统。这些由社区开发的包,可以用来快速扩展应用程序的功能集
1、安装Django Debug Toolbar
Django Debug Toolbar位于名列前三的第三方包之一
这是一个用于调试Debug Web应用程序的有用工具。该工具帮助我们了解应用的运行方式并发现问题。它通过提供面板来提供有关当前请求和响应的调试信息
在已激活的虚拟环境中运行以下命令来安装包
py -m pip install django-debug-toolbar
与django集成的第三方包需要一些安装后的设置,以将它们与我们的项目整合在一起。我们需要将包的Django应用程序添加到你的INSTALLED_APPS设置中。有些包需要其他更改,比如添加到我们的URL配置中。
链接: 安装指南
在polls/settings中添加
在项目URLconf中添加:
添加中间件polls/settings
polls/settings
INTERNAL_IPS=["127.0.0.1",
]
如果要在项目中运行测试,则不应激活工具栏。你 可以通过添加另一个设置来执行此操作
polls/settings
TESTING="test"in sys.argv
if not TESTING:INSTALLED_APPS=[*INSTALLED_APPS,#* 符号用于将一个列表或元组中的所有元素解包,并将其插入到另一个列表或元组中"debug_toolbar",]MIDDLEWARE=["debug_toolbar.middleware.DebugToolbarMiddleware",*MIDDLEWARE,]
URLconf:
from django.conf import settings
if not settings.TESTING:urlpatterns=[*urlpatterns,]+debug_toolbar_urls()
使用 * 将列表或元组中的元素作为单独的参数传递给函数:
def add(a, b, c): return a + b + c numbers = [1, 2, 3] result = add(*numbers) # 相当于 add(1, 2, 3) print(result) # 输出 6
使用 * 将一个列表或元组中的所有元素插入到另一个列表或元组中:
list1 = [1, 2, 3] list2 = [4, 5, 6] combined = [*list1, *list2] print(combined) # 输出 [1, 2, 3, 4, 5, 6]
总之最终的settings
"""
Django settings for vote project.Generated by 'django-admin startproject' using Django 5.0.6.For more information on this file, see
https://docs.djangoproject.com/en/5.0/topics/settings/For the full list of settings and their values, see
https://docs.djangoproject.com/en/5.0/ref/settings/
"""
import sys
from pathlib import Path# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = "django-insecure-g%c$9$3_-z8znkcj+qdf=oki+0m!y$7d8anr#i)%bcfq(#iq#l"# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = TrueALLOWED_HOSTS = []
INTERNAL_IPS=["127.0.0.1",
]# Application definitionINSTALLED_APPS = [# "debug_toolbar","polls.apps.PollsConfig","django.contrib.admin",#管理员站点"django.contrib.auth",#认证授权系统"django.contrib.contenttypes",#内容类型框架"django.contrib.sessions",#会话框架"django.contrib.messages",#消息框架"django.contrib.staticfiles",#管理静态文件的框架
]MIDDLEWARE = [# "debug_toobar.middleware.DebugToolbarMiddleware","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_PANELS=["debug_toolbar.panels.versions.VersionsPanel","debug_toolbar.panels.timer.TimerPanel","debug_toolbar.panels.settings.SettingsPanel","debug_toolbar.panels.headers.HeadersPanel","debug_toolbar.panels.request.RequestPanel","debug_toolbar.panels.sql.SQLPanel","debug_toolbar.panels.staticfiles.StaticFilesPanel","debug_toolbar.panels.templates.TemplatesPanel","debug_toolbar.panels.cache.CachePanel","debug_toolbar.panels.signals.SignalsPanel","debug_toolbar.panels.logging.LoggingPanel","debug_toolbar.panels.redirects.RedirectsPanel",]
ROOT_URLCONF = "vote.urls"TEMPLATES = [{"BACKEND": "django.template.backends.django.DjangoTemplates","DIRS": [BASE_DIR/"templates"],#在Django载入模板时使用,是一个待搜索路径"APP_DIRS": True,"OPTIONS": {"context_processors": ["django.template.context_processors.debug","django.template.context_processors.request","django.contrib.auth.context_processors.auth","django.contrib.messages.context_processors.messages",],},},
]WSGI_APPLICATION = "vote.wsgi.application"
## Database
# https://docs.djangoproject.com/en/5.0/ref/settings/#databasesDATABASES = {"default": {"ENGINE": "django.db.backends.sqlite3","NAME": BASE_DIR / "db.sqlite3",}
}# Password validation
# https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validatorsAUTH_PASSWORD_VALIDATORS = [{"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",},{"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",},{"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",},{"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",},
]# Internationalization
# https://docs.djangoproject.com/en/5.0/topics/i18n/LANGUAGE_CODE = "zh-hans"TIME_ZONE = "Asia/Shanghai"USE_I18N = True
USE_L10N = True
USE_TZ = TrueLANGUAGES = [('en', 'English'),('zh-hans', '简体中文'),
]# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/5.0/howto/static-files/STATIC_URL = "/static/"
TESTING="test" in sys.argv
if not TESTING:INSTALLED_APPS +=[# *INSTALLED_APPS,#* 符号用于将一个列表或元组中的所有元素解包,并将其插入到另一个列表或元组中"debug_toolbar",]MIDDLEWARE=["debug_toolbar.middleware.DebugToolbarMiddleware",# *MIDDLEWARE,]+MIDDLEWARE
# Default primary key field type
# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-fieldDEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
vote.urls
from django.contrib import admin
from django.urls import include,path
import debug_toolbar
from django.conf import settings
urlpatterns = [path("polls/",include("polls.urls")),path("admin/", admin.site.urls),
]if not settings.TESTING:urlpatterns +=[path('__debug__/',include(debug_toolbar.urls)),]
页面右方会显示面板
其他内容可参考
链接: 第8节 添加第三方包