装对Python解释器并配置VS Code的Django项目结构是关键:需选择含Django的虚拟环境解释器,设置settings.json指定manage.py路径和settings模块,launch.json中配置django调试类型,并安装Django插件以支持模板语法和跳转。

装对 Python 解释器,不是选“Python 3.x”就完事
VS Code 默认不认 Django 项目结构,第一步必须让编辑器知道用哪个 python 可执行文件——它得是装了 django 包的环境,不是系统自带或随便一个虚拟环境。
常见错误现象:ImportError: No module named 'django' 即使终端里 python -m django --version 能跑,VS Code 还是报错,大概率是解释器没切对。
- 按
Ctrl+Shift+P(macOS 是Cmd+Shift+P),输Python: Select Interpreter,然后选你项目用的虚拟环境里的python(比如./venv/bin/python或.\venv\Scripts\python.exe) - 别选全局 Python,哪怕它装了 Django;Django 项目应隔离依赖,解释器路径里带
venv或env才靠谱 - 选完后看右下角状态栏,确认显示的是你预期的路径,不是
/usr/bin/python3这类系统路径
settings.json 里加这三行,不然调试和运行都卡住
Django 启动、调试、代码跳转全靠 VS Code 知道 manage.py 在哪、settings.py 是哪个。光靠解释器不够,得显式告诉它项目结构。
打开工作区根目录下的 .vscode/settings.json(没有就新建),加:
{
"python.defaultInterpreterPath": "./venv/bin/python",
"python.django.managePyPath": "./manage.py",
"python.django.settingsModule": "myproject.settings"
}
注意:myproject.settings 是模块路径,不是文件路径;它对应你项目里 myproject/__init__.py 所在的包名,不是 myproject/settings.py。
-
managePyPath必须是相对工作区根目录的路径,写成./manage.py,不能是绝对路径 -
settingsModule值错了会导致调试时找不到INSTALLED_APPS,或者Run Server按钮灰掉 - 如果项目用多配置(如
settings/dev.py),这里填myproject.settings.dev,但得确保该模块能被 import
调试时 runserver 不生效?检查 launch.json 的 module 和 args
直接点绿色三角运行 manage.py 很容易失败——它不是普通脚本,得走 python -m django 或正确传参。VS Code 调试器默认当普通 Python 文件跑,会跳过 Django 的命令解析逻辑。
正确做法:在 .vscode/launch.json 中配一个 django 类型的配置(不是 python):
{
"name": "Django",
"type": "python",
"request": "launch",
"module": "django",
"args": ["runserver", "8000"],
"django": true
}
- 必须有
"django": true,否则断点进不了views.py,只停在manage.py入口 -
module设为django,不是manage.py;VS Code 会自动找manage.py并注入sys.path -
args里不要加manage.py,那是命令行习惯,调试器不需要 - 端口冲突时,
runserver会自动换端口,但调试器不会提示,得看终端输出里的实际端口
模板跳转和语法高亮失效?别只装 Python 插件
VS Code 默认不识别 .html 里的 {% if %} 或 {{ user.username }},也不会跳转到 views.py 里的函数。这不是 bug,是缺语言支持。
必须装两个插件:
-
Python(微软官方,处理后端逻辑) -
Django(Baptiste Darthenay 出品,小蓝图标,激活后.html文件右下角会变成Django HTML)
装完重启窗口,再打开 templates/base.html,就能点击 {% url 'home' %} 跳转到 urls.py 里对应条目,{{ object.name }} 也能跳转到视图中 context 字典赋值处。
容易被忽略的地方:插件启用后,必须用 .html 后缀保存模板文件(不能叫 base.djt),且文件得在 TEMPLATES['DIRS'] 列出的路径下,否则跳转链就断了。










