{# Macro `csrf_input`: renderiza el hidden input con el token CSRF double-submit que `CSRFMiddleware` espera en forms `
` nativos (no HTMX, no fetch). El middleware expone el token en `request.state.dg_csrf_token` al inicio del dispatch, así que está disponible incluso en el primer GET antes de que la cookie llegue al navegador. Uso: {% from "core/components/csrf.html" import csrf_input %} {{ csrf_input(request) }} ...
Si `request` no se pasa (o `request.state` no tiene token — el middleware está desactivado), el macro no imprime nada. El form funcionará si `DG_CSRF_ENABLED=0`; si está activo, el middleware responderá 403 — comportamiento esperado deny-by-default. #} {% macro csrf_input(request) -%} {%- set token = (request.state.dg_csrf_token if request and request.state else "") -%} {%- if token -%} {%- endif -%} {%- endmacro %}