Skip to main content

Generate HTML or XML in a pythonic way. Pure python alternative to web template engines.Can fill HTML forms with default values and error messages.

Project description

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 dictionnary of default values, and an errors dictionnary 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

yattag-1.5.3.zip (26.2 kB view details)

Uploaded Source

yattag-1.5.3.tar.gz (21.8 kB view details)

Uploaded Source

File details

Details for the file yattag-1.5.3.zip.

File metadata

  • Download URL: yattag-1.5.3.zip
  • Upload date:
  • Size: 26.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for yattag-1.5.3.zip
Algorithm Hash digest
SHA256 4c8c983fa64cdbdfaaf62cc78e372e8ef09ef3a93e336e7be0a1a35e95df66cd
MD5 76c1c32124372f4ef2b86707f099b297
BLAKE2b-256 2cf5e6714360a15aec691980dc7775208d32ca884cafbf81109396c4e8960e68

See more details on using hashes here.

File details

Details for the file yattag-1.5.3.tar.gz.

File metadata

  • Download URL: yattag-1.5.3.tar.gz
  • Upload date:
  • Size: 21.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for yattag-1.5.3.tar.gz
Algorithm Hash digest
SHA256 fef800d186c0cdb572abdf2bfad71511aa981a7cdc445943db7a3186c355dbf3
MD5 a6adfe05f13f864337e7b6f563fd0876
BLAKE2b-256 fe61a88627d2316eadf60d3aab4ea6eb00fc9b738fd8ad1bc6a25a7ed74a29b0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page