/htmlfactory

A simple way to produce HTML with Python.

Primary LanguagePythonMIT LicenseMIT

Untitled-Artwork

htmlfactory Build Status

A simple way to produce HTML with Python. Source code can be found on github.

pip install htmlfactory

htmlfactory simplifies the process of making HTML through Python.

Examples:

basic div example
TagFactory("div.my-class")
<div class='my-class'></div>

To add content between the divs, we can pass a string or TagFactory objects.

# pass a string
TagFactory("div.my-class", 'I am inside the div.')
<div class='my-class'>I am inside the div.</div>
# pass a TagFactory object
TagFactory("div.my-class",  TagFactory("div", "child tag"))
<div class="my-class">
  <div>
    child tag
  </div>
</div>
children div example

pass a list of TagFactory objects

TagFactory("div.parent-div", [
      TagFactory("div.first-child-div", (
        TagFactory("div.second-child-div", "It's party time.")))])
<div class='parent-div'>
  <div class='first-child-div'>
    <div class='second-child-div'>
      It's party time.
    </div>
  </div>
</div>

Note: Children tags can be passed through a list, tuple, or singular TagFactory object.

printing TagFactory objects

To output a TagFactory object, use print.

print(TagFactory('div', TagFactory('form')))
<div><form></form></div>

Use the function pretty_str() for an indented output.

print(TagFactory('div', TagFactory('form')).pretty_str())
<div>
  <form>
  </form>
</div>

If you would like an HTML, body, and head tag to be included, pass add_html_tags=True.

print(TagFactory('div', TagFactory('form')).pretty_str(add_html_tags=True))
<html>
<head>
</head>
<body>
  <div>
    <form>
    </form>
  </div>
</body>
</html>
multiple classes example

You can add as many classes as you want to your tag object:

TagFactory("div.class1.class2.class3.class4.class5", 'I have a lot of classes.')
<div class='class1 class2 class3 class4 class5'>I have a lot of classes.</div>
adding attributes example

You can add attributes to your tab object by using keyword arguments:

TagFactory("form", 'I have an action & method attribute.', action="/action_page.php", method="get")
<form action='/action_page.php' method='get'>I have an action and method attribute.</form>

Note: 'for' is a keyword so it cannot be used as a keyword argument. Instead use 'four'. Example: TagFactory("div.my-class", "inside the div", four="my-form")

Dashes (-) also cause a similar problem. For all html attributes that require a dash, omit the dash. The dash will be added upon creation of the object.

# with an omitted dash
TagFactory("div", role="application", ariadescribedby="info")
<div role='application' aria-describedby='info'></div>
adding tags without closing brackets example

You can create tags without closing brackets, which may be useful if wanting to add an img or link:

test_tag = SingletonTag("img", border="0", alt="TestTag",
                        src="logo_w3s.gif", width="100",
                        height="100")
<img border='0' alt='TestTag' src='logo_w3s.gif' width='100' height='100'>

The SingletonTag class is inherited to the TagFactory class, so SingletonTags can be treated like TagFactory objects and added as children html elements to other TagFactory objects.

a_tag = TagFactory("a", SingletonTag("img", src="logo_w3s.gif"),
                   href="www.google.com")
<a href='www.google.com'><img src='logo_w3s.gif'></a>