VSCode运行Django失败90%因解释器、launch.json和settings.json未对齐:解释器须选虚拟环境路径,launch.json需设"module":"django"并配--noreload和DJANGO_SETTINGS_MODULE,settings.json须配置managePyPath与settingsModule。

VSCode 跑不起来 Django,90% 不是代码问题,而是解释器、launch.json 和 settings.json 三者没对齐——选错解释器就 ModuleNotFoundError: No module named 'django',module 写成 program 就断点全失效,managePyPath 漏配就 Run Server 按钮灰掉。
Python 解释器必须指向带 Django 的虚拟环境
VSCode 不继承终端的激活状态,哪怕你在终端里 pip install django 成功了,它也可能用系统 Python 去跑。右下角状态栏显示 /usr/bin/python3 或 C:\Python39\python.exe 就是错的。
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Python: Select Interpreter - 从列表中只选含
venv或env字样的路径,例如:./venv/bin/python(Linux/macOS)或.\venv\Scripts\python.exe(Windows) - 选完立刻检查右下角状态栏;再打开任意
.py文件,悬停from django.conf import settings看是否有红线 - 如果仍报错,试试在终端先激活环境再启 VSCode:
source venv/bin/activate && code .(Linux/macOS)或venv\Scripts\activate.bat && code .(Windows)
launch.json 必须设 "module": "django" 且带 --noreload
用 "program": "./manage.py" 启动,VSCode 会当普通脚本执行,跳过 Django 命令解析逻辑——runserver 参数不生效、DJANGO_SETTINGS_MODULE 不加载、断点进不去视图函数。
-
"module"字段必须是"django",不能是"manage",也不能留空 -
"args"至少包含["runserver", "--noreload", "8000"]:缺--noreload会导致 Django fork 子进程,VSCode 只附着在主进程上 -
"env"中必须显式注入"DJANGO_SETTINGS_MODULE": "myproject.settings"(替换成你实际模块路径)和"PYTHONPATH": "${workspaceFolder}" - 别在
manage.py里打断点——它只执行一次;断点要落在views.py、models.py这类业务文件里
settings.json 必须显式声明 managePyPath 和 settingsModule
VSCode 默认不认识 Django 项目结构。光有解释器和 launch.json 不够,Run Server 按钮灰掉、跳转不到 models.py、模板语法无提示,基本都是这里漏配。
- 在项目根目录的
.vscode/settings.json中添加:{ "python.django.managePyPath": "./manage.py", "python.django.settingsModule": "myproject.settings" } -
managePyPath必须是相对路径,不能写绝对路径(如/home/user/project/manage.py) -
settingsModule是 Python 模块路径(如myproject.settings.dev),不是文件路径;确保该模块能被import,否则调试时INSTALLED_APPS为空、中间件全失效
静态文件 404?先查 urls.py 是否注册了 static()
DEBUG=True 不等于静态文件自动可访问。Django runserver 默认只在 URL 匹配 STATIC_URL 时才代管静态文件,但前提是主 urls.py 里显式调用了 static() 函数注册路由。
- 确认
settings.py中已设置STATIC_URL和STATICFILES_DIRS - 在项目主
urls.py(通常是myproject/urls.py)中,if DEBUG:块内添加:urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) - 如果用了
django.contrib.staticfiles,确保INSTALLED_APPS包含它,且运行过python manage.py collectstatic(开发阶段一般不用)
最容易被忽略的是 settingsModule 的拼写错误和 managePyPath 的路径层级——比如 manage.py 实际在 src/ 子目录下,却写成 "./manage.py";或者 settings 模块在 myproject/config/settings.py,却填成 "myproject.config.settings" 但忘了在 config/__init__.py 里暴露它。


















