sublime text 中 django 模板语法无高亮,需安装社区维护的 html (django) 插件并手动设置语法为“html (django)”,而非依赖文件后缀或已停更的 sublimedjango。

Sublime Text 里 Django 模板语法没高亮,是因为没装对插件
默认 Sublime Text 不识别 {% %} 和 {{ }} 这类 Django 模板语法,它把它们当纯文本或 HTML 处理。直接改文件后缀(比如改成 .html)也不行——语法高亮靠的是「语法定义」,不是后缀名。
真正起作用的是 Django 插件(官方叫 SublimeDjango),但它已停止维护;现在更可靠的是 HTML (Django) 语法包,属于社区维护的 PackageDev 生态一部分。
- 别装
SublimeDjango:它不支持 Sublime Text 4,装了反而可能让.html文件高亮错乱 - 推荐装
HTML (Django):通过 Package Control 安装后,手动把当前文件语法设为HTML (Django)即可生效 - 注意:它不会自动绑定
.html后缀——Django 模板文件通常还是.html,但 Sublime 默认用原生HTML语法,得手动切换
怎么手动启用 HTML (Django) 语法高亮
装完插件后,高亮不会自动出现,必须显式指定当前文件使用的语法。这个动作一次就行,但容易被忽略。
- 打开你的 Django 模板文件(比如
base.html) - 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS)呼出命令面板 - 输入
Set Syntax: HTML (Django),回车确认 - 此时
{% extends %}、{{ user.username }}、{% for item in items %}全部有颜色了 - 如果想让所有
.html文件默认用这个语法:在菜单栏点View → Syntax → Open all with current extension as… → HTML (Django)
为什么有些标签还是灰色?比如 {% load static %} 或自定义模板标签
HTML (Django) 语法包只覆盖 Django 内置模板语法,对第三方或项目级自定义标签(如 {% load crispy_forms_tags %})不识别——这不是 bug,是语法定义的天然限制。
立即学习“Python免费学习笔记(深入)”;
- 自定义标签、过滤器、
{% load %}引入的模块,不会被高亮,但也不会报错,只是保持灰色 - 不影响运行,只是视觉上少一层提示;如果你重度依赖自定义标签,可以考虑用
SublimeLinter+django-html-linter做静态检查,而不是靠高亮 - 别试图改
HTML (Django).sublime-syntax文件来硬加规则:维护成本高,升级插件后会被覆盖
和 Jinja2 模板语法冲突怎么办
如果你的项目同时用 Django 和 Jinja2(比如 Flask 混合部署),HTML (Django) 语法会把 Jinja2 的 {{ }} 当成 Django 解析,但 {% set %} 或 {%- %} 这种 Jinja2 特有语法就无法识别,显示异常。
- 一个文件只能用一种语法:不能让同一份
.html同时兼容两种模板引擎 - 解决办法是区分后缀:Django 模板用
.html+HTML (Django),Jinja2 模板改用.j2或.jinja,再装Jinja2插件并绑定后缀 - Sublime 不支持“根据文件内容自动判断模板类型”,所以后缀分离是最稳的方案
最常被卡住的地方,其实是第一步——装了插件却没手动设置语法。很多人搜“Sublime Django 高亮”,看到一堆安装教程就停了,忘了最后那一下 Set Syntax 才是开关。还有人以为改后缀就能触发,结果发现 .djhtml 这种冷门后缀根本没人配语法定义,白折腾。










