
后端开发工具调试器【免费下载链接】django-debug-toolbarA configurable set of panels that display various debug information about the current request/response.项目地址https://gitcode.com/gh_mirrors/dj/django-debug-toolbar点击查看免费下载djang-debug-toolbar 仓库 内置了一个名为example/的完整 Django 示例工程用于演示调试工具条在真实请求/响应中的工作方式并附带若干专门页面来验证工具条与主流 JavaScript 框架互不干扰。本文以 example/README.rst 为主线逐条拆解其安装、启动、切换数据库与异步运行的官方步骤并对照 Makefile、example/settings.py 等源码文件补全每个参数背后的实际行为帮助你在 10 分钟内搭建一个可直接观察、可切换、可测试的调试工具条演示环境。一、示例工程定位它演示什么、验证什么example/目录的设计目标有两条见 example/README.rst 的 About 小节演示工具条的基本用法工程按“最新稳定版 Django”设计运行覆盖了工具条在普通 WSGI 请求、异步视图、模板渲染、缓存操作等场景下的表现提供 JavaScript 框架兼容测试页专门验证工具条注入的前端脚本不会与常见 JS 框架发生冲突。从 example/urls.py 的路由定义可以完整看到这些“测试页”的清单路由模板/视图验证目标/index.html基础页面含 fetch/XHR 会话计数器example/templates/index.html/jinja/index.jinjaJinja2 引擎Jinja2 模板后端的模板面板表现/jquery/jquery/index.html与 jQuery 3.3.1 共存/mootools/mootools/index.html与 MooTools 1.6.0 共存/prototype/prototype/index.html与 Prototype 1.7.3.0 共存/turbo/、/turbo/2turbo/index.htmlHotwire Turbo 增强导航/htmx/boost/、/htmx/boost/2htmx/boost.htmlhtmx boost 增强导航/cache/cache.html缓存面板set/get/miss/tasks/tasks.htmlDjango 6.0 任务系统面板/bad-form/bad_form.html表单异常场景/async/、/async/db/、/async/db-concurrent/异步视图ASGI 下的数据库追踪/admin/Django AdminAdmin 站点内的工具条表现/ajax/incrementJSON 响应fetch/XHR 增量请求路由末尾统一挂载了debug_toolbar_urls()这是工具条接管自身管理 URL如刷新、渲染源码等的入口。二、依赖安装pip install --group dev实际装了什么官方步骤的第一步是在仓库根目录执行$ python -m pip install --group dev--group语法读取的是 pyproject.toml 中的[dependency-groups]表。示例工程之所以能跑起来依赖的正是这个dev组其中与example/直接相关的几项含原文件注释为[dependency-groups] dev [ daphne, # async in Example app django, django-csp, # Used in tests/test_csp_rendering jinja2, whitenoise, # To avoid dealing with static files # 其余为 black / coverage / pre-commit / tox / selenium 等工程化工具 ]daphne异步ASGI演示所需的服务器见第六节jinja2支撑/jinja/页面使用的 Jinja2 模板后端whitenoise避免开发模式下单独处理静态文件的问题example/settings.py 的MIDDLEWARE中已启用WhiteNoiseMiddleware。工具条本体自身的运行依赖则很简单django5.2与sqlparse0.2pyproject.toml 的dependencies。当前仓库声明的 Django 版本支持面为 5.2 / 6.0 / 6.1classifiersPython 要求3.10。三、一键启动make example到底执行了什么README 明确说明以下命令必须从 Django Debug Toolbar 仓库根目录即包含example/的目录执行$ make example对照 Makefile 中example目标这条命令实际串联了三步example: ## Run the example application python example/manage.py migrate --noinput -DJANGO_SUPERUSER_PASSWORDp python example/manage.py createsuperuser \ --noinput --username$(USER) --email$(USER)mailinator.com python example/manage.py runserver第一步创建数据库默认 SQLite文件落在example/db.sqlite3见 example/settings.py 的DATABASES默认配置第二步以--noinput方式创建超级用户用户名与当前操作系统用户同名密码固定为p通过环境变量DJANGO_SUPERUSER_PASSWORD注入-前缀表示即使该变量未生效也不报错——这与 README 中“superusers username will be the same as the current OS user and the password is p”的描述一一对应第三步启动 Django 开发服务器。由于 example/manage.py 开头做了sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))把仓库根目录加入了解析路径所以才能从根目录用python example/manage.py ...的方式调用。四、手动分步执行migrate / createsuperuser / runserver如果你不想走 Make 目标README 给出了等价的分步命令同样在仓库根目录执行# 1. 创建数据库 $ python example/manage.py migrate # 2. 创建超级用户交互式 $ python example/manage.py createsuperuser # 3. 启动开发服务器 $ python example/manage.py runserver三个命令背后都指向同一套配置DJANGO_SETTINGS_MODULE默认为example.settings见 example/manage.py而 example/settings.py 中有几个对调试行为至关重要的设置DEBUG True且INTERNAL_IPS [127.0.0.1, ::1]——只有来自本机 IP 的请求才会渲染工具条工具条采用条件启用ENABLE_DEBUG_TOOLBAR DEBUG and test not in sys.argv if ENABLE_DEBUG_TOOLBAR: INSTALLED_APPS [debug_toolbar] MIDDLEWARE [debug_toolbar.middleware.DebugToolbarMiddleware] # Customize the config to support turbo and htmx boosting. DEBUG_TOOLBAR_CONFIG {ROOT_TAG_EXTRA_ATTRS: data-turbo-permanent hx-preserve}最后一个配置项值得注意给html根标签追加data-turbo-permanent hx-preserve属性使工具条在 Hotwire Turbo 与 htmx boost 的“无刷新”页面切换中被保留这正是/turbo/与/htmx/boost/页面能够持续显示工具条的原因。五、切换数据库后端DB_BACKEND环境变量README 指出可通过DB_BACKEND环境变量更换示例工程使用的数据库例如 PostgreSQL$ DB_BACKENDpostgresql python example/manage.py migrate $ DB_BACKENDpostgresql python example/manage.py runserverexample/settings.py 中的实现比 README 说的更完整——共支持三个后端且匹配时做了lower()归一化大小写不敏感DATABASES { default: { ENGINE: django.db.backends.sqlite3, NAME: os.path.join(BASE_DIR, example, db.sqlite3), } } # To use another database, set the DB_BACKEND environment variable. if os.environ.get(DB_BACKEND, ).lower() postgresql: DATABASES {default: {ENGINE: django.db.backends.postgresql, NAME: debug_toolbar, USER: debug_toolbar, PASSWORD: debug_toolbar}} if os.environ.get(DB_BACKEND, ).lower() mysql: DATABASES {default: {ENGINE: django.db.backends.mysql, NAME: debug_toolbar, USER: debug_toolbar, PASSWORD: debug_toolbar}}即取值范围实际为不设置sqlite3默认、postgresql、mysql三种。注意切换为 PostgreSQL/MySQL 时数据库名、用户、密码均硬编码为debug_toolbar源码注释提示具体建库授权步骤参见 docs/contributing.rst。六、异步ASGI方式运行示例工程README 的最后一节演示了让示例工程跑在异步服务器上的完整流程先安装 DaphneDjango 官方 ASGI 参考服务器$ python -m pip install daphne再设置ASYNC_SERVERtrue启动$ ASYNC_SERVERtrue python example/manage.py runserver这个开关的作用在 example/settings.py 中体现为一行动态装配INSTALLED_APPS [ *([daphne] if os.getenv(ASYNC_SERVER, ) else []), django.contrib.admin, ... ]即ASYNC_SERVER环境变量为真时才把daphne装入应用列表避免同步模式下引入不必要的依赖组件。此外仓库中还有一条更直接的 ASGI 启动路径Makefile 的example_async目标在完成 migrate 与创建超级用户后直接以daphne example.asgi:application启动对应入口为 example/asgi.py注意它加载的是 example/async_/settings.py该文件复用主配置并切换ROOT_URLCONF到example.async_.urls。异步场景下有专门的验证视图example/views.py/async/db/async_db视图通过await User.objects.acount()执行异步查询/async/db-concurrent/async_db_concurrent视图用asyncio.gather并发两条acount()查询用于观察 SQL 面板对并发异步查询的追踪情况。七、示例工程的自动化测试example/目录自身也带有一个最小测试文件 example/test_views.py# Add tests to example app to check how the toolbar is used # when running tests for a project. # See https://github.com/django-commons/django-debug-toolbar/issues/1405 class ViewTestCase(TestCase): def test_index(self): response self.client.get(reverse(home)) assert response.status_code 200它验证的是“在包含工具条配置的项目中跑test命令时一切正常”。这与第二节引出的ENABLE_DEBUG_TOOLBAR DEBUG and test not in sys.argv是配套设计Django 运行测试时会把DEBUG置为 False但仅靠DEBUG无法区分场景因此额外检查sys.argv中不含test确保测试期间工具条不会干扰断言。运行该测试对应 Makefile 中的example_test目标example_test: ## Run the test suite for the example application python example/manage.py test example八、小结一条命令到三种运行形态运行形态命令关键配置来源同步 WSGI默认 SQLitemake example或分步migrate/createsuperuser/runserverexample/settings.py同步 PostgreSQL/MySQLDB_BACKENDpostgresql python example/manage.py runserverDB_BACKEND分支异步 ASGIASYNC_SERVERtrue python example/manage.py runserver或make example_asyncdaphneASYNC_SERVER分支 example/asgi.py整套流程的共同前提是Python 环境已按 pyproject.toml 的dev依赖组完成安装且命令一律在仓库根目录执行。示例工程本身即是一份“可运行的参考实现”——当你在自己的项目中集成调试工具条遇到 JS 框架冲突、异步追踪缺失或测试期干扰时可直接回到example/中对应页面与配置逐项比对。赞分享后端开发工具调试器【免费下载链接】django-debug-toolbarA configurable set of panels that display various debug information about the current request/response.项目地址https://gitcode.com/gh_mirrors/dj/django-debug-toolbar点击查看免费下载相关推荐Markoff自定义配置打造个性化Markdown写作环境Markoff自定义配置打造个性化Markdown写作环境 Markoff是一款轻量级的macOS Markdown预览工具通过简单的自定义配置你可以打造Ractor安全最佳实践避免Actor死锁与资源泄漏的5个关键点Ractor安全最佳实践避免Actor死锁与资源泄漏的5个关键点 Ractor是一个纯Rust实现的Actor框架深受Erlang的gen_server启发后端异步编程django-debug-toolbar自定义命令开发扩展调试工具集django debug toolbar自定义命令开发扩展调试工具集 你是否在Django开发中遇到过ORM查询优化难题是否需要更直观的SQL执行监控工具后端开发工具调试器上一篇3种底层技术重构HTML到WXML的内容转换逻辑下一篇10个Snowflake Arctic Embed-L实战应用场景从语义搜索到推荐系统创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考