htmlBuilder

raw JSON →
1.0.0 verified Fri May 01 auth: no python maintenance

A Python library for building HTML programmatically, providing a Pythonic way to construct HTML elements and attributes. The current stable version is 1.0.0, released on 2022-08-03. The project appears to be in maintenance mode with no recent updates.

pip install htmlbuilder
error ImportError: cannot import name 'html' from 'htmlbuilder'
cause Attempting to import html directly from the top-level package instead of from htmlbuilder.tags.
fix
Use 'from htmlbuilder.tags import html'
error TypeError: 'Node' object is not callable
cause Trying to call a Node object like a function, often due to forgetting to import the tag function correctly.
fix
Ensure you import tag functions from htmlbuilder.tags and use them as html(...), not html(...).
error AttributeError: 'Node' object has no attribute '...'
cause Trying to access an attribute or method that does not exist on a Node, often due to confusion with DOM manipulation.
fix
Node objects represent only the structure; use str() to get the HTML string. Do not attempt to modify after creation.
gotcha All tag functions return a Node object, not a string. You must call str() or use render() to get the HTML string.
fix Use str(node) or node.render() to produce the HTML output.
deprecated The library has not been updated since 2022 and may not support newer Python features or fix bugs.
fix Consider using an alternative like dominate or lxml.html if you need active maintenance.
gotcha Attributes must be passed as keyword arguments or using attribute classes; positional attribute strings are not supported.
fix Use Class('value') or Id('value') from htmlbuilder.attributes for class and id.

Construct a simple HTML document with a heading and a paragraph.

from htmlbuilder.tags import html, head, body, h1, p
from htmlbuilder.attributes import Class, Id

doc = html(
    head(),
    body(
        h1('Hello, world!', Class('main-title'), Id('title')),
        p('This is a paragraph.', Class('content'))
    )
)
print(str(doc))