8、添加第三方包

目录

  • [1、安装Django Debug Toolbar](#1、安装Django Debug Toolbar)

Django的一个优势就是有丰富的第三方包生态系统。这些由社区开发的包,可以用来快速扩展应用程序的功能集

1、安装Django Debug Toolbar

Django Debug Toolbar位于名列前三的第三方包之一

这是一个用于调试Debug Web应用程序的有用工具。该工具帮助我们了解应用的运行方式并发现问题。它通过提供面板来提供有关当前请求和响应的调试信息

在已激活的虚拟环境中运行以下命令来安装包

powershell 复制代码
py -m pip install django-debug-toolbar

与django集成的第三方包需要一些安装后的设置,以将它们与我们的项目整合在一起。我们需要将包的Django应用程序添加到你的INSTALLED_APPS设置中。有些包需要其他更改,比如添加到我们的URL配置中。

链接: 安装指南

在polls/settings中添加

在项目URLconf中添加:

添加中间件polls/settings

polls/settings

python 复制代码
INTERNAL_IPS=[
    "127.0.0.1",
]

如果要在项目中运行测试,则不应激活工具栏。你 可以通过添加另一个设置来执行此操作

polls/settings

python 复制代码
TESTING="test"in sys.argv
if not TESTING:
    INSTALLED_APPS=[
        *INSTALLED_APPS,#* 符号用于将一个列表或元组中的所有元素解包,并将其插入到另一个列表或元组中
        "debug_toolbar",
    ]
    MIDDLEWARE=[
        "debug_toolbar.middleware.DebugToolbarMiddleware",
        *MIDDLEWARE,
    ]

URLconf:

python 复制代码
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

python 复制代码
"""
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 = True

ALLOWED_HOSTS = []
INTERNAL_IPS=[
    "127.0.0.1",
]

# Application definition

INSTALLED_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/#databases

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": BASE_DIR / "db.sqlite3",
    }
}


# Password validation
# https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators

AUTH_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 = True

LANGUAGES = [
    ('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-field

DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"

vote.urls

python 复制代码
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节 添加第三方包

相关推荐
芷栀夏15 分钟前
飞算Java AI开发助手:引领智能编程新风尚
java·人工智能·python
刺客xs16 分钟前
MYSQL数据库----DCL语句
android·数据库·mysql
胖墩的IT20 分钟前
在高并发场景下,仅依赖数据库机制(如行锁、版本控制)无法完全避免数据异常的问题
数据库·mysql
对你无可奈何32 分钟前
ubuntu 22.04 anaconda comfyui的安装
python·ubuntu·aigc
天天爱吃肉821833 分钟前
汽车嵌入式开发:如何构建「不可替代」的核心竞争力?
数据库·汽车
站大爷IP37 分钟前
Python深浅拷贝全解析:从原理到实战的避坑指南
python
wh_xia_jun1 小时前
Python 数据挖掘之数据探索
python
彬彬醤1 小时前
ChatGPT无法登陆?分步排查指南与解决方案
服务器·网络·数据库·网络协议·chatgpt
秋难降1 小时前
序列的心你摸透了吗😆😆😆
python
安替-AnTi2 小时前
香港理工大学实验室定时预约
爬虫·python·post·实验室·预约·香港理工