
在 django 模板中无法直接使用 python 风格的字典索引(如 `record['fields']['nombre']`),必须改用点号(`.`)语法访问属性或字典键,且键名需为合法标识符(如 `nombre`)。
Django 模板语言(DTL)不支持方括号索引语法(如 ['fields'] 或 ['Nombre']),这是导致 Could not parse the remainder: '\['fields'\]\['Nombre'\]' 错误的根本原因。DTL 仅支持通过点号(.)访问对象属性、字典键(前提是键名为有效 Python 标识符)或列表索引(如 item.0),但不支持任意字符串键的方括号访问。
✅ 正确写法(推荐):
{{ record.fields.Nombre }} {{ record.fields.Apellido }} {{ record.fields.Email }}
⚠️ 注意事项:
- record 必须是 Python 字典(或具有 __getitem__ 方法的对象),且其 fields 值本身也是字典;
- Nombre、Apellido、Email 等键名不能包含空格、连字符或非 ASCII 符号(如 'first-name' 或 'email address' 会失败);
- 若键名含非法字符(例如 record['fields']['Email Address']),需在视图层预处理:
# views.py for r in airtable_data: fields = r.get('fields', {}) r['display'] = { 'nombre': fields.get('Nombre', ''), 'apellido': fields.get('Apellido', ''), 'email': fields.get('Email', ''), }模板中即可安全使用:{{ record.display.nombre }}。
? 小技巧:可在模板中用 |default 过滤器增强健壮性:
{{ record.fields.Nombre|default:'—' }}
总结:Django 模板不是 Python 解释器——它有独立的、受限的表达式语法。始终优先使用 obj.attr 而非 obj['attr'],并在数据传入模板前确保结构清晰、键名合规。










