# Undefined Variable URL: /docs/troubleshooting/undefined-variable/ Section: troubleshooting Tags: troubleshooting, errors -------------------------------------------------------------------------------- Undefined Variable Debug UndefinedError exceptions. The Error UndefinedError: Undefined variable 'usre' in page.html:5 Common Causes 1. Typo in Variable Name {# ❌ Typo #} {{ usre.name }} {# ✅ Correct #} {{ user.name }} Fix: Check spelling against what's passed to render(). 2. Variable Not Passed to Template # ❌ Missing variable template.render(title="Hello") # ✅ Include all needed variables template.render(title="Hello", user=current_user) Fix: Ensure all template variables are passed in render(). 3. Wrong Attribute Name {# ❌ Wrong attribute #} {{ user.nmae }} {# ✅ Correct attribute #} {{ user.name }} Fix: Verify object attributes match your code. 4. Nested Object is None {# ❌ parent might be None #} {{ page.parent.title }} {# ✅ Check first #} {% if page.parent %} {{ page.parent.title }} {% end %} Fix: Use conditional checks or default filter. Solutions Use default Filter {{ user.nickname | default("Anonymous") }} {{ config.timeout | default(30) }} Check with is defined {% if user is defined %} {{ user.name }} {% else %} Guest {% end %} Optional Chaining Pattern {% if post and post.author %} {{ post.author.name }} {% end %} Safe Navigation {{ user | default({}) | attr("name") | default("Unknown") }} Debug Tips Print Available Variables # In Python print(context.keys()) Use debug Filter {{ user | debug }} Output (to stderr): DEBUG: <User> .name = 'Alice' .email = 'alice@example.com' Check Template Context def render_debug(template_name, **context): print(f"Rendering {template_name}") print(f"Context keys: {list(context.keys())}") return env.render(template_name, **context) Prevention Type Hints for Context from dataclasses import dataclass @dataclass class PageContext: title: str user: User items: list[Item] # IDE will catch missing fields context = PageContext(title="Hello", user=user, items=items) template.render(**asdict(context)) Template Validation def validate_context(context, required): missing = [k for k in required if k not in context] if missing: raise ValueError(f"Missing: {missing}") See Also Error Handling — Exception types Variables — Variable access patterns Filters — The default filter -------------------------------------------------------------------------------- Metadata: - Word Count: 305 - Reading Time: 2 minutes