VSCode运行Django项目必须手动对齐解释器、启动模块和环境变量三者,否则必现ModuleNotFoundError或断点失效;需选虚拟环境解释器、launch.json设"module":"django"及"--noreload"、urls.py显式注册static()路由。

VSCode 不能“直接运行”Django 项目,必须手动对齐解释器、启动模块和环境变量三者,否则必然卡在 ModuleNotFoundError: No module named 'django' 或断点完全不触发。
Python 解释器必须指向装了 Django 的虚拟环境
VSCode 不继承你终端里 source venv/bin/activate 的状态,它只认你在 UI 里手动选的那个 python 可执行文件路径。选错解释器,90% 的问题就在这一步。
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入并选择Python: Select Interpreter - 从列表中只选带
venv或env字样的路径,例如:./venv/bin/python(Linux/macOS)或.\venv\Scripts\python.exe(Windows) - 绝对别选
/usr/bin/python3或C:\Python312\python.exe这类系统路径——Django 很可能根本没装在那里 - 选完立刻看窗口右下角是否显示该路径;再新开终端执行
which python(macOS/Linux)或where python(Windows),输出必须一致
launch.json 必须用 "module": "django",不能用 program
设 "program": "./manage.py" 是最常见误区:VSCode 会把它当普通脚本执行,跳过 Django 自己的命令解析流程,导致 DJANGO_SETTINGS_MODULE 不生效、runserver 不真正启动、断点打在视图函数上也完全不命中。
- 在项目根目录建
.vscode/launch.json,内容至少包含:"module": "django"、"args": ["runserver", "--noreload", "8000"] -
--noreload是硬性要求:Django 默认 fork 子进程处理请求,调试器只能附着在主进程,不加这个参数,断点永远不亮 -
"env"字段必须显式写:"DJANGO_SETTINGS_MODULE": "myproject.settings"(替换成你真实的模块路径,不是文件路径) - 如果用了多 settings 文件(如
settings/dev.py),这里填myproject.settings.dev,且确保该模块能被import
静态文件 404?检查 urls.py 是否注册了 static()
DEBUG=True 不等于静态文件自动可访问。Django 开发服务器默认只在 URL 匹配 STATIC_URL 时才代管静态文件,但前提是主 urls.py 里显式调用了 static() 函数注册路由。
立即学习“Python免费学习笔记(深入)”;
- 打开主
urls.py(通常是myproject/urls.py),确认有这两行: from django.conf import settingsfrom django.conf.urls.static import static- 并在
urlpatterns列表末尾加上:+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) - 注意:这段只应在
DEBUG=True时启用,生产环境必须由 Nginx 等反向代理处理静态文件
最容易被忽略的是:所有配置都依赖 manage.py 在项目根目录。如果它被挪到子目录(比如 src/manage.py),launch.json 就得改用 "module": "django.core.management" 并加 "--pythonpath" 参数,否则连 runserver 命令都找不到。


















