# globals

URL: /kida/api/environment/globals/
Section: environment
Description: Default global functions and variables for templates.

This module provides built-in global functions that are available in all
templates. These functions are registered in the Environment by default.

HTMX Helpers:
    Functions for detecting and responding to HTMX requests in templates.
    These integrate with web frameworks (like Chirp) that set metadata via
    RenderContext.set_meta().

Security Helpers:
    Functions for CSRF token injection and other security features.

Usage:
    Frameworks should populate RenderContext metadata:

        from kida.render_context import render_context

        with render_context() as ctx:
            ctx.set_meta("hx_request", True)
            ctx.set_meta("hx_target", "user-list")
            ctx.set_meta("csrf_token", generate_token())

            html = template.render(**data)

    Templates can then access via globals:

        {% if hx_request() %}
          {# Render fragment for HTMX #}
        {% else %}
          {# Render full page #}
        {% end %}

---

> For a complete page index, fetch /kida/llms.txt.

Open LLM text
(/kida/api/environment/globals/index.txt)

Share with AI

Ask Claude
(https://claude.ai/new?q=Please%20help%20me%20understand%20this%20documentation%3A%20%2Fkida%2Fapi%2Fenvironment%2Fglobals%2Findex.txt)

Ask ChatGPT
(https://chatgpt.com/?q=Please%20help%20me%20understand%20this%20documentation%3A%20%2Fkida%2Fapi%2Fenvironment%2Fglobals%2Findex.txt)

Ask Gemini
(https://gemini.google.com/app?q=Please%20help%20me%20understand%20this%20documentation%3A%20%2Fkida%2Fapi%2Fenvironment%2Fglobals%2Findex.txt)

Ask Copilot
(https://copilot.microsoft.com/?q=Please%20help%20me%20understand%20this%20documentation%3A%20%2Fkida%2Fapi%2Fenvironment%2Fglobals%2Findex.txt)

Module

#
`environment.globals`

Default global functions and variables for templates.

This module provides built-in global functions that are available in all
templates. These functions are registered in the Environment by default.

HTMX Helpers:

```
Functions for detecting and responding to HTMX requests in templates.
These integrate with web frameworks (like Chirp) that set metadata via
RenderContext.set_meta().
```

Security Helpers:

```
Functions for CSRF token injection and other security features.
```

Usage:

```
Frameworks should populate RenderContext metadata:

    from kida.render_context import render_context

    with render_context() as ctx:
        ctx.set_meta("hx_request", True)
        ctx.set_meta("hx_target", "user-list")
        ctx.set_meta("csrf_token", generate_token())

        html = template.render(**data)

Templates can then access via globals:

    {% if hx_request() %}
      {# Render fragment for HTMX #}
    {% else %}
      {# Render full page #}
    {% end %}
```

5Functions

## Functions

`hx_request`

0

`bool`

▼

Check if current request is from HTMX.

Returns True if the framework has set t…

`def hx_request() -> bool`

Check if current request is from HTMX.

Returns True if the framework has set the hx_request metadata flag,
indicating this is an HTMX-initiated request rather than a full page load.

Usage:
{% if hx_request() %}
{# Partial render - just the updated component #}
{% block content %}...{% end %}
{% else %}
{# Full page render #}
{% extends "base.html" %}
{% end %}

Framework Integration:

# In your web framework (e.g., Chirp):

```
from kida.render_context import render_context

with render_context() as ctx:
    # Detect HTMX via HX-Request header
    is_htmx = request.headers.get("HX-Request") == "true"
    ctx.set_meta("hx_request", is_htmx)

    html = template.render(**data)
```

##### Returns

`bool`

`hx_target`

0

`str | None`

▼

Get HTMX target element ID.

Returns the value of the HX-Target header, which i…

`def hx_target() -> str | None`

Get HTMX target element ID.

Returns the value of the HX-Target header, which indicates which element
HTMX will swap content into. Useful for conditional rendering based on
which part of the page is being updated.

Usage:
{% if hx_target() == "user-list" %}
{# Render just the user list #}

{% for user in users %}

- {{ user.name }}

{% end %}

{% end %}

Framework Integration:
with render_context() as ctx:
target = request.headers.get("HX-Target")
ctx.set_meta("hx_target", target)

##### Returns

`str | None`

`hx_trigger`

0

`str | None`

▼

Get HTMX trigger element ID.

Returns the value of the HX-Trigger header, which…

`def hx_trigger() -> str | None`

Get HTMX trigger element ID.

Returns the value of the HX-Trigger header, which indicates which element
triggered the HTMX request. Useful for tracking which button/link initiated
an action.

Usage:
{% if hx_trigger() == "delete-button" %}

Item deleted

{% end %}

Framework Integration:
with render_context() as ctx:
trigger = request.headers.get("HX-Trigger")
ctx.set_meta("hx_trigger", trigger)

##### Returns

`str | None`

`hx_boosted`

0

`bool`

▼

Check if request is HTMX-boosted.

Returns True if the request came from an ele…

`def hx_boosted() -> bool`

Check if request is HTMX-boosted.

Returns True if the request came from an element with hx-boost="true",
which means HTMX is progressively enhancing a standard link/form to use
AJAX instead of a full page load.

Usage:
{% if hx_boosted() %}
{# Enhanced navigation - smooth transition #}

{% block content %}...{% end %}

{% else %}
{# Standard page load #}
{% end %}

Framework Integration:
with render_context() as ctx:
boosted = request.headers.get("HX-Boosted") == "true"
ctx.set_meta("hx_boosted", boosted)

##### Returns

`bool`

`csrf_token`

0

`Markup`

▼

Generate CSRF token hidden input for forms.

Returns a hidden input field conta…

`def csrf_token() -> Markup`

Generate CSRF token hidden input for forms.

Returns a hidden input field containing the CSRF token. The framework
must set the token via RenderContext.set_meta("csrf_token", value).

Renders as:

Usage:

{{ csrf_token() }}

```
  <input type="email" name="email" required>
  <button type="submit">Submit</button>
</form>
```

Framework Integration:

# In your web framework:

```
from kida.render_context import render_context

with render_context() as ctx:
    # Generate token (framework-specific)
    token = session.generate_csrf_token()
    ctx.set_meta("csrf_token", token)

    html = template.render(**data)

# Framework middleware should validate the token on POST
```

Security:
The token value is automatically HTML-escaped to prevent XSS.
Returns Markup so the HTML is not double-escaped in templates.

Warns:
UserWarning: If csrf_token() is called but no token was set

##### Returns

`Markup`
