PyHTMX
PyHTMX is a dead simple library to generate HTMX code in Python.
Inspired by this StackOverflow thread on how to generate HTML with XML.
Features
- Outputs indented code
- Outputs subtrees for the generated DOM
- Children elements and content can be provided as lists
- Building based on nested constructors or
withstatements
Installing
$ python3 -m pip install pyhtmx-lib
Examples
First, an example based on nesting constructors:
from pyhtmx import *
html = Html(
[
Head(
[
Title('My Website'),
Script(src="https://unpkg.com/htmx.org@2.0.3"),
]
),
Body(
[
Header(
[
Img(src='/path/to/logo.png', _id="logo"),
Nav(
Ul(
[
Li(
"First item.",
hx_post="/first-item-clicked",
hx_trigger="click",
hx_target="#container-div",
hx_swap="innerHTML",
),
Li("Second item."),
Li("Third item.")
]
),
),
]
),
Div(
'Content here',
_id="container-div",
),
Footer([Hr(), 'Copyright 2024']),
]
),
]
)
html.dump()
The example results in the following output:
<html>
<head>
<title>My Website</title>
<script src="https://unpkg.com/htmx.org@2.0.3" />
</head>
<body>
<header>
<img src="/path/to/logo.png" id="logo" />
<nav>
<ul>
<li hx-post="/first-item-clicked" hx-trigger="click" hx-target="#container-div" hx-swap="innerHTML">First item.</li>
<li>Second item.</li>
<li>Third item.</li>
</ul>
</nav>
</header>
<div id="container-div">Content here</div>
<footer>
<hr />
<span>Copyright 2024</span>
</footer>
</body>
</html>
Now an example based on contexts defined with the with statement,
with Div(_class="btn-primary") as div:
with A(href="/link/to/another/site"):
with P("This is the first paragraph.", style="color: blue"):
pass
with P("Yet another paragraph.", style="color: red"):
pass
div.dump()
which results in
<div class="btn-primary">
<a href="/link/to/another/site">
<p style="color: blue">This is the first paragraph.</p>
</a>
<p style="color: red">Yet another paragraph.</p>
</div>
Related projects
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pyhtmx_lib-0.1.0.tar.gz
(8.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyhtmx_lib-0.1.0.tar.gz.
File metadata
- Download URL: pyhtmx_lib-0.1.0.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.0.1 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8460969f8d9b87d8c82ce4e42efc333465fde378326715c1e47ffeb5603732c
|
|
| MD5 |
63537d013d9940366772c5a182102f48
|
|
| BLAKE2b-256 |
2f096358f031ff02eaf232c44748397db26f7a7ca6ed5e6946afaf57d7e6dd9d
|
File details
Details for the file pyhtmx_lib-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pyhtmx_lib-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.0.1 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
02788827b596ca5d0dd164476ab2ea200ab5a1424e7d31eba78617402cb008d4
|
|
| MD5 |
34e876a81711f36e0267dc09d15d73f3
|
|
| BLAKE2b-256 |
0021ff0c425e8a4f6de8288e39ecd7d3a5f0543ad1f9dfea1fca261808e0c6f3
|