generate html with python 3
Project description
domonic
Generate html with python 3!
from domonic import *
output = render(
html(
head(
style(),
script(),
),
body(
div("hello world"),
a("this is a link", _href="http://www.somesite.com", _style="font-size:10px;"),
ol(''.join([f'{li()}' for thing in range(5)])),
h1("test", _class="test"),
)
)
)
<html><head><style></style><script></script></head><body><div>hello world</div><a href="http://www.somesite.com" style="font-size:10px;">this is a link</a><ol><li></li><li></li><li></li><li></li><li></li></ol><h1 class="test">test</h1></body></html>
install
python3 -m pip install domonic
usage
print(html(body(h1('Hello, World!'))))
<html><body><h1>Hello, World!</h1></body></html>
attributes
prepend attributes with an underscore ( avoids clashing with python keywords )
test = label(_class='classname', _for="someinput")
print(test)
<label class="classname" for="someinput"></label>
lists
just do list comprehension and join it to strip the square brackets
ul(''.join([f'{li()}' for thing in range(5)])),
<ul><li></li><li></li><li></li><li></li></ul>
rendering
render takes 2 parameters, some domonic and an optional output file.
page = div(span('Hello World'))
render(page, 'index.html')
data-tags
python doesn't allow hyphens in parameter names. so use variable keyword argument syntax for custom data-tags
div("test", **{"_data-test":"test"} )
fugly
use your own methods to prettify. the example uses a library that leverages beautifulsoup. i.e.
output = render(html(body(h1('Hello, World!'))))
from html5print import HTMLBeautifier
print(HTMLBeautifier.beautify(output, 4))
common errors
TODO - catch these and raise a friendly error that tells you what to fix
IndexError: list index out of range - You most likely didn't put a underscore on an attribute
SyntaxError: invalid syntax - You most likely are missing a comma somewhere between params
run tests
python3 test_domonic.py
more
several undocumented features. take a look at the code.
disclaimer
exerimental/learning project
There's a complete more supported library I found already doing similar called 'dominate' . So if you want to do something like this, use that.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file domonic-0.0.2.tar.gz
.
File metadata
- Download URL: domonic-0.0.2.tar.gz
- Upload date:
- Size: 26.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6f4b8b229dcf762d12c6d383cfe660e8e3e3c1342b091179c4021c4a5aaea47 |
|
MD5 | 8fcb4087646b5360e8b3dad565218597 |
|
BLAKE2b-256 | 94a0d6f2031db21cde54607d4eae61a2022d143dd1a642fdf900750a6f013d1a |