Skip to content

htmforge.core.element

htmforge.core.element.Element(tag, *children, **attrs)

Repräsentiert einen einzelnen HTML-Tag mit Kindern und Attributen.

Parameters:

Name Type Description Default
tag str

Der HTML-Tag-Name (z.B. "div", "span").

required
*children Child

Beliebig viele Kind-Elemente (Element, str oder None). None-Werte werden stillschweigend ignoriert.

()
**attrs object

HTML-Attribute als Keyword-Argumente.

{}
Attribute-Konventionen
  • cls wird zu class im HTML.
  • for_ wird zu for im HTML.
  • Unterstriche innerhalb von Attribut-Namen werden zu Bindestrichen konvertiert (hx_gethx-get, data_iddata-id).
  • Boolesche Attribute (True) werden als eigenständige Flags gerendert (disabled, checked ...).
  • Attribute mit Wert False oder None werden weggelassen.
Example

el = Element("div", Element("span", "Hallo"), cls="container") el.to_html() '

Hallo
'

Initialisiert ein Element mit Tag-Name, Kindern und Attributen.

Source code in htmforge\core\element.py
def __init__(self, tag: str, *children: Child, **attrs: object) -> None:
    """Initialisiert ein Element mit Tag-Name, Kindern und Attributen."""
    self._tag: str = tag.lower()
    self._children: tuple[Child, ...] = children
    self._attrs: dict[str, object] = attrs

__repr__()

Gibt eine kurze Debug-Darstellung zurück.

Source code in htmforge\core\element.py
def __repr__(self) -> str:
    """Gibt eine kurze Debug-Darstellung zurück."""
    return f"Element(tag={self._tag!r}, attrs={self._attrs!r})"

__str__()

Delegiert zu :meth:to_html.

Source code in htmforge\core\element.py
def __str__(self) -> str:
    """Delegiert zu :meth:`to_html`."""
    return self.to_html()

to_html()

Rendert das Element rekursiv zu einem sicheren HTML-String.

Alle Text-Inhalte werden durch markupsafe.escape gesichert, damit kein unbeabsichtigtes HTML injiziert werden kann.

Returns:

Type Description
str

Ein vollständiger, wohlgeformter HTML-String.

Source code in htmforge\core\element.py
def to_html(self) -> str:
    """Rendert das Element rekursiv zu einem sicheren HTML-String.

    Alle Text-Inhalte werden durch ``markupsafe.escape`` gesichert, damit
    kein unbeabsichtigtes HTML injiziert werden kann.

    Returns:
        Ein vollständiger, wohlgeformter HTML-String.
    """
    attrs_str = self._render_attrs()
    tag = self._tag

    if tag in _VOID_ELEMENTS:
        return f"<{tag}{attrs_str}>"

    inner = self._render_children()
    return f"<{tag}{attrs_str}>{inner}</{tag}>"

htmforge.core.element.safe_html(text)

Markiert einen String als sicheres HTML — verhindert doppeltes Escaping.

Nützlich wenn der Text bereits valides HTML enthält (z.B. aus einer Datenbank) und nicht erneut escaped werden soll.

Parameters:

Name Type Description Default
text str

Ein String der bereits HTML enthält.

required

Returns:

Name Type Description
Ein Markup

class:markupsafe.Markup-Objekt, das beim Rendern

Markup

nicht nochmals escaped wird.

Example

from htmforge.elements import div from htmforge.core.element import safe_html div(safe_html("fett")).to_html() '

fett
'

Source code in htmforge\core\element.py
def safe_html(text: str) -> Markup:
    """Markiert einen String als sicheres HTML — verhindert doppeltes Escaping.

    Nützlich wenn der Text bereits valides HTML enthält (z.B. aus einer
    Datenbank) und nicht erneut escaped werden soll.

    Args:
        text: Ein String der bereits HTML enthält.

    Returns:
        Ein :class:`markupsafe.Markup`-Objekt, das beim Rendern
        nicht nochmals escaped wird.

    Example:
        >>> from htmforge.elements import div
        >>> from htmforge.core.element import safe_html
        >>> div(safe_html("<strong>fett</strong>")).to_html()
        '<div><strong>fett</strong></div>'
    """
    return Markup(text)  # noqa: S704