必须手动将.html文件语法设为“django > html (django)”,因sublime默认按原生html处理,djaneiro仅提供语法定义而不自动启用;全局绑定会破坏非模板html的补全,路径匹配需第三方插件;{% load %}引入的标签如{% static %}因静态正则限制恒为灰色,属正常技术妥协。

装 Djaneiro,手动设语法为“Django > HTML (Django)”,别信自动识别——Sublime 不会看你的 templates/ 目录,也不会读 settings.py。
为什么装了插件 .html 文件还是纯灰?
因为 Sublime 默认把所有 .html 当原生 HTML 处理,{% if %} 和 {{ user }} 不是“没高亮”,而是根本没被语法解析器捕获。Djaneiro 或 HTML (Django Templates) 只是提供了语法定义文件(.sublime-syntax),不等于自动启用。
- 打开一个模板文件(如
base.html),点击右下角当前语法名(通常是HTML) - 在弹出菜单中选
Django > HTML (Django)(Djaneiro 安装后才有这一项) - 若没看到该选项,说明插件没装成功,或装的是已停更的
SublimeDjango(它不兼容 ST4) - 此时
{% extends %}、{{ }}应立刻变色;如果没反应,检查控制台(Ctrl+`)是否有Unable to find syntax file报错
怎么让所有 .html 默认用 Django 语法?
可以配,但必须清楚代价:一旦全局绑定,所有 .html(包括前端组件、Markdown 导出页、纯静态 landing page)都会失去原生 HTML 补全和 Emmet 支持。
- 按
Ctrl+Shift+P→ 输入Settings – Syntax Specific→ 回车 - 在弹出的 JSON 中添加:
{"extensions": ["html"], "syntax": "Packages/Djaneiro/HTML (Django).sublime-syntax"} - 保存后,新打开的
.html文件将默认使用 Django 语法 - 更安全的做法是按路径匹配:比如只对
templates/**/*.html生效——但 Sublime 原生不支持 glob 路径绑定,只能靠第三方插件(如 ApplySyntax)实现,维护成本高,一般不推荐
{% load static %} 和 {% url %} 为什么还是灰色?
这不是配置错误,是语法高亮机制的硬限制。Sublime 的 .sublime-syntax 基于静态正则,无法解析 {% load %} 动态引入的标签库,所以 {% static %}、{% url %}、{% get_current_language %} 全部被当作普通 block 标签处理,颜色和 {% if %} 一致。
- 接受它:这类标签语义固定、拼写简单,不影响编码效率
- 别去改
HTML (Django).sublime-syntax文件硬加规则——升级插件后会被覆盖,且容易破坏括号匹配 - 需要更强提示?用
SublimeLinter+django-html-linter做静态检查,而不是依赖颜色 - 补全不受影响:Djaneiro 的
url、static等代码片段仍可触发(输入url+ Tab)
和 Jinja2 模板混用时高亮错乱怎么办?
一个文件只能用一种语法。如果你的项目里既有 Django 模板({% if %}),又有 Jinja2({% set %}、{%- %}),HTML (Django) 会把 {%- %} 当非法语法,而 HTML (Jinja2) 又不认识 {% load %}。
- 不要试图让同一份
.html同时兼容两种引擎——Sublime 不支持运行时语法切换 - 物理隔离:Jinja2 模板用
.j2或.jinja后缀,并单独绑定语法;Django 模板坚持用.html+Django > HTML (Django) - 如果必须共存于
.html,优先保 Django(因多数混合项目以 Django 为主),Jinja2 片段接受灰色显示
最常被忽略的一点:高亮只是视觉辅助,不验证任何逻辑。{% extends "nonexistent.html" %} 在 Sublime 里可能高亮完美,但运行时报 TemplateDoesNotExist——调试永远要以 python manage.py runserver 的实际输出为准。











