yattag 1.16.1


pip install yattag

  Latest version

Released: Nov 02, 2024

Project Links

Meta
Author: Benjamin Le Forestier

Classifiers

Environment
  • Web Environment

Intended Audience
  • Developers

License
  • OSI Approved :: GNU Library or Lesser General Public License (LGPL)

Operating System
  • OS Independent

Programming Language
  • Python
  • Python :: 2
  • Python :: 2.6
  • Python :: 2.7
  • Python :: 3
  • Python :: 3.2
  • Python :: 3.3
  • Python :: 3.4
  • Python :: 3.5
  • Python :: 3.6
  • Python :: 3.7

Topic
  • Internet :: WWW/HTTP
  • Internet :: WWW/HTTP :: Dynamic Content
  • Software Development :: Libraries :: Python Modules
https://travis-ci.org/leforestier/yattag.svg

Why use a template engine when you can generate HTML or XML documents with Python in a very readable way?

( full tutorial on yattag.org )

Basic example

Nested html tags, no need to close tags.

from yattag import Doc

doc, tag, text = Doc().tagtext()

with tag('html'):
    with tag('body', id = 'hello'):
        with tag('h1'):
            text('Hello world!')

print(doc.getvalue())

Html form rendering

Yattag can fill your HTML forms with default values and error messages. Pass a defaults dictionary of default values, and an errors dictionary of error messages to the Doc constructor. Then, use the special input, textarea, select, option methods when generating your documents.

Example with default values

from yattag import Doc

doc, tag, text = Doc(
    defaults = {'ingredient': ['chocolate', 'coffee']}
).tagtext()

with tag('form', action = ""):
    with tag('label'):
        text("Select one or more ingredients")
    with doc.select(name = 'ingredient', multiple = "multiple"):
        for value, description in (
            ("chocolate", "Dark chocolate"),
            ("almonds", "Roasted almonds"),
            ("honey", "Acacia honey"),
            ("coffee", "Ethiopian coffee")
        ):
            with doc.option(value = value):
                text(description)
    doc.stag('input', type = "submit", value = "Validate")

print(doc.getvalue())

Example with default values and errors

from yattag import Doc

doc, tag, text = Doc(
    defaults = {
        'title': 'Untitled',
        'contact_message': 'You just won the lottery!'
    },
    errors = {
        'contact_message': 'Your message looks like spam.'
    }
).tagtext()

with tag('h1'):
    text('Contact form')
with tag('form', action = ""):
    doc.input(name = 'title', type = 'text')
    with doc.textarea(name = 'contact_message'):
        pass
    doc.stag('input', type = 'submit', value = 'Send my message')

print(doc.getvalue())

Full tutorial on yattag.org

GitHub repo: https://github.com/leforestier/yattag

Extras: None
Dependencies:
typing