vscode调试django需正确配置python解释器、launch.json环境变量及静态文件路由。须选虚拟环境路径,设置django_settings_module,启用subprocess,且urls.py中添加static()路由。

装对 Python 解释器,不是选“Python 3.x”就完事
VSCode 启动 Django 项目失败,八成卡在解释器没认对。它不看你系统里装了几个 Python,只认你当前工作区指定的那个 python 可执行文件路径。
实操建议:
- 打开项目根目录后,按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Python: Select Interpreter,从列表里选带venv或env字样的路径,比如./venv/bin/python(macOS/Linux)或.\venv\Scripts\python.exe(Windows) - 别选系统级的
/usr/bin/python3或C:\Python39\python.exe——Django 和依赖包很可能不在那里 - 确认选中后,看 VSCode 窗口右下角是否显示对应环境路径;再打开一个
.py文件,看左下角有没有正确识别出django模块(悬停from django.conf import settings应无红线)
settings.py 里 DEBUG=True 不等于能直接 runserver
Django 调试失败常被误认为是代码问题,其实是 VSCode 没把命令行参数和环境变量传进去。比如 runserver 需要 DJANGO_SETTINGS_MODULE,而 VSCode 默认不自动设这个。
实操建议:
- 在项目根目录建
.vscode/launch.json,用Python: Django模板生成基础配置,然后确保"env"字段包含:"DJANGO_SETTINGS_MODULE": "myproject.settings"(替换成你实际的 settings 模块路径) -
"args"别空着,至少加["runserver", "8000"],避免它默认监听127.0.0.1:8000却被防火墙或端口占用挡掉 - 如果用了自定义
manage.py路径(比如放在子目录),得改"module"为"django.core.management"并在"args"里显式写上["--pythonpath", "./src", "runserver"]
静态文件 404?不是 Django 配错了,是 VSCode 没开 Live Server 或没配好 URL
运行 runserver 后访问 /static/css/app.css 返回 404,很多人去翻 STATIC_URL 和 STATICFILES_DIRS,其实问题在开发阶段根本没启用静态文件服务——Django 默认只在 DEBUG=True 且请求路径匹配 static/ 时才由开发服务器代管,但前提是 urls.py 里有 staticfiles_urlpatterns() 注册。
实操建议:
- 检查主
urls.py是否有这段(仅开发用):from django.contrib import admin<br>from django.urls import path, include<br>from django.conf import settings<br>from django.conf.urls.static import static<br><br>urlpatterns = [<br> path('admin/', admin.site.urls),<br> # ... 其他路由<br>] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) - 确保
settings.py中STATIC_URL = '/static/',且STATICFILES_DIRS指向你放 CSS/JS 的真实目录(如[BASE_DIR / 'static']) - 别指望 VSCode 自己启动额外的静态服务——它只是调用
python manage.py runserver,一切行为由 Django 内置服务器控制
断点进不去 views.py?检查是不是在 manage.py 里启的调试,而不是 runserver 子进程
VSCode 默认调试 manage.py,但 runserver 实际会 fork 出新进程处理 HTTP 请求,原调试器无法跟进。结果就是你在 views.py 打的断点永远不触发。
实操建议:
- 必须在
launch.json中启用"subProcess": true,否则调试器只挂住主进程,收不到子进程信号 - 确认
"module"是"django.core.management",而不是直接指向manage.py——后者容易绕过 Django 的调试钩子 - 如果仍不生效,临时在 view 函数开头加一句
import pdb; pdb.set_trace(),看终端是否暂停:能停说明环境通,只是 VSCode 断点没连上子进程
Django 在 VSCode 里的调试链很脆,subProcess、DJANGO_SETTINGS_MODULE、虚拟环境路径这三处只要错一个,表现出来的症状可能完全一样:服务起来但断点无效、静态资源 404、甚至 ImportError: No module named 'django'。动手前先用终端手动跑一遍 python manage.py runserver,确认基础流程走通,再让 VSCode 接管。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











