# jinja2.exceptions.UndefinedError: 'dict object' 没有属性 'username'

- **ID:** `python/starlette-template-undefined-error`
- **领域:** python
- **类别:** runtime_error
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

模板引用了传递给 TemplateResponse 的上下文字典中不存在的变量属性。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| 3.x | active | — | — |

## 解决方案

1. **** (94% 成功率)
   ```
   {{ user.get('username', 'guest') }}
   ```
2. **** (92% 成功率)
   ```
   return templates.TemplateResponse('p.html', {'request': request, 'user': user or {}})
   ```

## 无效尝试

- **** — StrictUndefined makes the error louder, not absent; it does not supply the missing key. (85% 失败率)
- **** — Hides the bug and returns a broken page. (80% 失败率)
