Skip to main content

Document Templating Markup Language (DTML)

Project description

https://github.com/zopefoundation/DocumentTemplate/actions/workflows/tests.yml/badge.svg https://coveralls.io/repos/github/zopefoundation/DocumentTemplate/badge.svg?branch=master Current version on PyPI Supported Python versions

DocumentTemplate

This package implements the original Document Templating Markup Language (DTML). It uses custom SGML tags to implement simple programmatic features, such as variable replacement, conditional logic and loops.

Inside Zope environments page templates and TAL have superseded DTML for most use cases.

Changelog

5.1 (2026-01-19)

  • Move package metadata from setup.py to pyproject.toml.

  • Fix Zope test failures accessing sequence wrappers introduced in #76 from untrusted code. (#81)

5.0 (2025-11-27)

  • Add support for Python 3.13, 3.14.

  • Drop support for Python 3.7, 3.8, 3.9.

  • Support lazy batching again, support general iterators (#75)

4.6 (2023-11-13)

  • Add official support for Python 3.12.

4.5 (2023-09-18)

  • Add preliminary support for Python 3.12rc1.

  • Be more resilient on sorting if the getter returns None. (#72)

4.4 (2022-01-12)

  • Drop support for Python 3.6.

4.3 (2022-12-21)

  • Fix restructured-text format specification. Tests were silently skipped.

4.2 (2022-12-16)

  • Fix insidious buildout configuration bug for tests against Zope 4.

  • Add support for Python 3.11.

4.1 (2022-09-20)

  • Set the tree-s cookie for dtml-tree tags with SameSite=Lax. The tree tag never set this attribute. That causes modern browsers to show warnings in the browser console and break tree displays in the future. See https://hacks.mozilla.org/2020/08/changes-to-samesite-cookie-behavior/ for information about the SameSite cookie attribute and why its handling in browsers is changing.

  • Add support for Python 3.10.

  • Drop support for Python 3.5.

4.0 (2020-11-12)

  • Make ustr.ustr Python 3 compatible (Zope#921)

  • Add support for Python 3.9

  • Restore sql_quote behavior of always returning native strings (#54)

  • Fix broken tree tag (#52)

  • Drop support for Python 2.

  • Eventually drop BBB code leading to a deprecation warning in version 3.2+. (#42)

  • Update isort to version 5.

3.2.2 (2020-02-04)

  • de-fang sql_quote even more as quoting is too database-specific. (#48)

3.2.1 (2020-02-03)

  • prevent a really strange AccessControl test failure when running Zope’s alltests script by importing deprecated names from zope.sequencesort.ssort instead of sequence/SortEx.py in sequence/__init__.py

3.2 (2020-02-03)

  • no longer escape double quotes in sql_quote - that breaks PostgreSQL (#48)

  • Added DeprecationWarnings for all deprecated files and names (#42)

  • Import sorting done like Zope itself

  • Applied extended linting configuration similar to Zope’s own

3.1 (2020-01-31)

  • Escape more characters in sql_quote. Taken over from PloneHotfix20200121.

3.1b2 (2019-05-16)

  • Fix broken handling of SyntaxError under Python 3

3.1b1 (2019-05-13)

  • Don’t call HTTPExceptions that are looked up in TemplateDicts

3.0 (2019-05-09)

Changes since 2.13.2:

Breaking changes

  • Replace C code with a pure-Python implementation.

  • Remove VSEval module. Please use DT_Util.EVal now.

  • Remove DTtestExpr module. It contained nothing useful.

  • Remove support for string exceptions in <dtml-except>. (#29)

Features

  • Add support for Python 3.5, 3.6, 3.7, 3.8.

  • Make the rendering encoding configurable to fix rendering on Zope 4. (#43)

  • Add __contains__ support to DocumentTemplate.TemplateDict.

Bug fixes

  • Only decode input in html_quote when needed under Python 3 (Products.PythonScripts#28 <https://github.com/zopefoundation/Products.PythonScripts/issues/28>_)

  • Make sure all JSON-serialized data is text data and not bytes. (#45)

  • Fix regression with exception handling in <dtml-except> with Python 2. (#25)

  • Stabilized TreeTag rendering for objects without _p_oid values. (#26)

  • Fix bugs with <dtml-in>:

    • Raise proper error if prefix is not simple.

    • Fix complex multisort in Python 3.

    • Fix iteration over list of tuples in Python 3.

  • Ensure html_quote is being applied to content.

2.13.2 (2011-12-12)

  • Restrict the available functions in DocumentTemplate.sequence to public API’s of zope.sequencesort.

2.13.1 (2010-07-15)

  • LP #143273: Enable the dtml-var modifiers url_quote, url_unquote, url_quote_plus and url_unquote_plus to handle unicode strings.

2.13.0 (2010-06-19)

  • Released as separate package.

Project details


Download files

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

Source Distribution

documenttemplate-5.1.tar.gz (72.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

documenttemplate-5.1-py3-none-any.whl (88.5 kB view details)

Uploaded Python 3

File details

Details for the file documenttemplate-5.1.tar.gz.

File metadata

  • Download URL: documenttemplate-5.1.tar.gz
  • Upload date:
  • Size: 72.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for documenttemplate-5.1.tar.gz
Algorithm Hash digest
SHA256 99820ffe188bb17b3f661fe0d4678864529da508de256b5fad35416692cdf235
MD5 511ddada328c67c55ef7a40fcd2536f2
BLAKE2b-256 cadd84a06ad4a131ea903ab52bb123fb2cf2356b54b454fb05ffbffd8c8b5cc9

See more details on using hashes here.

File details

Details for the file documenttemplate-5.1-py3-none-any.whl.

File metadata

  • Download URL: documenttemplate-5.1-py3-none-any.whl
  • Upload date:
  • Size: 88.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for documenttemplate-5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 06b2e1e9369f41e823fbcbc65cd1fb23aeb6d8ef70bcc6de799145c705770943
MD5 c27dce52e665f03a19be611bd0ddfee2
BLAKE2b-256 9366ba1bad4d96d86c1eaaf9b32c397a3b7aa09bc0ef707f26db09a82c42260f

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