21 lines
798 B
Python
21 lines
798 B
Python
"""Shared HTMX full-page-vs-fragment response helper (Chapter 04).
|
|
|
|
Every blueprint serving a dashboard tab (Ch08/09/10) uses this instead of
|
|
duplicating the `if request.headers.get("HX-Request")` check, so the
|
|
convention is identical everywhere.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from flask import Request, render_template
|
|
|
|
|
|
def is_htmx(request: Request) -> bool:
|
|
"""True if this request was triggered by an hx-* attribute."""
|
|
return request.headers.get("HX-Request", "").lower() == "true"
|
|
|
|
|
|
def render_htmx_aware(request: Request, *, full_template: str, partial_template: str, **ctx):
|
|
"""Render `full_template` on first load, `partial_template` on HTMX swaps."""
|
|
template = partial_template if is_htmx(request) else full_template
|
|
return render_template(template, **ctx)
|