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

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.0.2.zip (11.9 kB view details)

Uploaded Source

yattag-1.0.2.tar.gz (9.2 kB view details)

Uploaded Source

File details

Details for the file yattag-1.0.2.zip.

File metadata

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

File hashes

Hashes for yattag-1.0.2.zip
Algorithm Hash digest
SHA256 7a1cf58e6034f93ebaf712c401a7d34a1300f7efe66622c5b176ef13a999c1a3
MD5 d4c14cbae8ca1529642ff51c2dfea153
BLAKE2b-256 da5870190534f31c5f48b5ca32f26a08335b481254d89d41258da6448dc4cf82

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for yattag-1.0.2.tar.gz
Algorithm Hash digest
SHA256 f91dcd3ac8f7546bb5aa5f7e4537e3726b527b23d5aaeffc5108fb07fa03eb1f
MD5 1471cc97466163647db90dd68b4c6b1d
BLAKE2b-256 a75ef30b818e1c40aa10454ae76b4c5e29e9be11180b4d9be531abfef5c7de9c

See more details on using hashes here.

Supported by

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