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.7.1.zip (27.1 kB view details)

Uploaded Source

yattag-1.7.1.tar.gz (22.8 kB view details)

Uploaded Source

File details

Details for the file yattag-1.7.1.zip.

File metadata

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

File hashes

Hashes for yattag-1.7.1.zip
Algorithm Hash digest
SHA256 df39d5792bfd7ddc709a92eb12e871ed4bca0a8a51a185504ab05afc79b8d8d3
MD5 fa1c4b70098ff8dff697a7cb22ec03c1
BLAKE2b-256 baa84e112d79e2ebbbdaeea824fa2a3ba071b7e88bf3d29787ec4548976d368a

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for yattag-1.7.1.tar.gz
Algorithm Hash digest
SHA256 b1f42d6948654f94add327ab8ffef9fc39aa73ee784c5260e6312ea289a81ce8
MD5 78da41918d123e07470b60b2f3021598
BLAKE2b-256 5c1c1a802a14544457dbaec9ae6bc36a0e9cb243a664b701fe813b8c14269fe9

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