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.1.0.zip (12.7 kB view details)

Uploaded Source

yattag-1.1.0.tar.gz (9.9 kB view details)

Uploaded Source

File details

Details for the file yattag-1.1.0.zip.

File metadata

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

File hashes

Hashes for yattag-1.1.0.zip
Algorithm Hash digest
SHA256 a22104b5bad26a37c28628c7a52f2de1cd0dd8d3cbfd2513a9553f657cbb7074
MD5 9d0e4e3e890d99f5c1e82609d540cab6
BLAKE2b-256 cbdcd0442d706b3258c372b48669cbc8f3c2e1d03dc900fc936e0333d45c13af

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for yattag-1.1.0.tar.gz
Algorithm Hash digest
SHA256 55ee8b922c1619072b6fd99a4adbc1d340bf3427b7400498c624bbfd6c7ef3e1
MD5 43b7b6bfede31e7675dddd30306b7d77
BLAKE2b-256 aa3c285a95a5dd8368a24a99203d2bd60a2b060d7bb3829839df866e46eb336c

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