1.0Kпросмотров
96.5%от подписчиков
17 октября 2025 г.
Score: 1.1K
https://github.com/t-strings/tdom Наверняка многие после прочтения changelog`а python 3.14 задавались вопросом, а на кой нам все-таки нужны новые t строки 🤔? Свеженькая библиотечка tdom - самый хрестоматийный пример. Это умный html шаблонизатор с защитой от инъекций и несколькими фичами для удобной работы с html Есть поддержка условий в шаблонах is_logged_in = True user_content = t"<span>Welcome back!</span>" guest_content = t"<a href='/login'>Please log in</a>" header = html(t"<div>{user_content if is_logged_in else guest_content}</div>") # <div><span>Welcome back!</span></div> Можно описывать компоненты разметка как классы в питоне class SafeWidget: def html(self): return "<button>Custom Widget</button>" page = html(t"<div>My widget: {SafeWidget()}</div>") # <div>My widget: <button>Custom Widget</button></div> есть поддержка dataclass from dataclasses import dataclass, field from typing import Any, Iterable from tdom import Node, html @dataclass class Card: children: Iterable[Node] title: str subtitle: str | None = None def call(self) -> Node: return html(t""" <div class='card'> <h2>{self.title}</h2> {self.subtitle and t'<h3>{self.subtitle}</h3>'} <div class="content">{self.children}</div> </div> """) result = html(t"<{Card} title='My Card' subtitle='A subtitle'><p>Card content</p></{Card}>") # <div class='card'> # <h2>My Card</h2> # <h3>A subtitle</h3> # <div class="content"><p>Card content</p></div> # </div> Мне уже тысячу лет не приходилось делать что-то сложное с шаблонизаторами, но если бы такая задача была, почему бы и нет? Рекомендую посмотреть примеры в README, чтобы оценить полет фантазии авторов и мощь 💪 новых шаблонных строк в python. #python
1.0K
просмотров
1881
символов
Да
эмодзи
Нет
медиа

Другие посты @afonasev_blog

Все посты канала →
https://github.com/t-strings/tdom Наверняка многие после про — @afonasev_blog | PostSniper