| MarkupSafe |
| ========== |
| |
| MarkupSafe implements a text object that escapes characters so it is |
| safe to use in HTML and XML. Characters that have special meanings are |
| replaced so that they display as the actual characters. This mitigates |
| injection attacks, meaning untrusted user input can safely be displayed |
| on a page. |
| |
| |
| Installing |
| ---------- |
| |
| Install and update using `pip`_: |
| |
| .. code-block:: text |
| |
| pip install -U MarkupSafe |
| |
| .. _pip: https://pip.pypa.io/en/stable/quickstart/ |
| |
| |
| Examples |
| -------- |
| |
| .. code-block:: pycon |
| |
| >>> from markupsafe import Markup, escape |
| |
| >>> # escape replaces special characters and wraps in Markup |
| >>> escape("<script>alert(document.cookie);</script>") |
| Markup('<script>alert(document.cookie);</script>') |
| |
| >>> # wrap in Markup to mark text "safe" and prevent escaping |
| >>> Markup("<strong>Hello</strong>") |
| Markup('<strong>hello</strong>') |
| |
| >>> escape(Markup("<strong>Hello</strong>")) |
| Markup('<strong>hello</strong>') |
| |
| >>> # Markup is a str subclass |
| >>> # methods and operators escape their arguments |
| >>> template = Markup("Hello <em>{name}</em>") |
| >>> template.format(name='"World"') |
| Markup('Hello <em>"World"</em>') |
| |
| |
| Donate |
| ------ |
| |
| The Pallets organization develops and supports MarkupSafe and other |
| libraries that use it. In order to grow the community of contributors |
| and users, and allow the maintainers to devote more time to the |
| projects, `please donate today`_. |
| |
| .. _please donate today: https://palletsprojects.com/donate |
| |
| |
| Links |
| ----- |
| |
| * Website: https://palletsprojects.com/p/markupsafe/ |
| * Documentation: https://markupsafe.palletsprojects.com/ |
| * Releases: https://pypi.org/project/MarkupSafe/ |
| * Code: https://github.com/pallets/markupsafe |
| * Issue tracker: https://github.com/pallets/markupsafe/issues |
| * Test status: https://dev.azure.com/pallets/markupsafe/_build |
| * Official chat: https://discord.gg/t6rrQZH |