htpy - Python中的HTML
项目描述
htpy - Python中的HTML
htpy是一个库,它使得在纯Python中编写HTML变得有趣且高效,无需模板语言。
在Python中定义HTML
from htpy import body, h1, head, html, li, title, ul
menu = ["egg+bacon", "bacon+spam", "eggs+spam"]
print(
html[
head[title["Today's menu"]],
body[
h1["Menu"],
ul(".menu")[(li[item] for item in menu)],
],
]
)
并获取HTML
<!DOCTYPE html>
<html>
<head>
<title>Today's menu</title>
</head>
<body>
<h1>Menu</h1>
<ul class="menu">
<li>egg+bacon</li>
<li>bacon+spam</li>
<li>eggs+spam</li>
</ul>
</body>
</html>
此项目的动机
在Personalkollen,htpy最初开发的地方,我们经常在使用经典模板时遇到困难。htpy的创建是为了提高从Python后端生成HTML的生产力和体验。
主要功能
-
出色的调试: 避免从模板中出现的晦涩难懂的堆栈跟踪。使用您喜欢的Python调试器。
-
易于扩展: 没有特殊方式来定义模板标签/过滤器。只需调用常规函数即可。
-
与现有的Python Web框架兼容: 与Django、Flask或其他任何Python Web框架配合使用效果极佳!
-
与htmx配合使用效果极佳: htpy在编写服务器端渲染的局部组件时提供了极佳的体验。
-
创建可重用组件: 将组件、片段、复杂布局/页面定义为常规Python变量或函数。
-
从React中借鉴熟悉的概念: React帮助使使用编程语言编写HTML变得流行。htpy使用了大量的类似结构。
哲学
htpy生成HTML元素和属性,并提供一些辅助工具。
htpy不会强制执行任何特定的模式或样式来组织您的页面、组件和布局。这并不意味着htpy不能用来构建复杂的网页或应用程序。
相反:鼓励您利用Python的力量来构建项目。使用模块、类、函数、装饰器、列表推导、生成器、条件语句、静态类型以及Python的任何其他特性来组织组件。这为您提供了很大的能力,并使htpy从小型Flask项目扩展到更大规模的应用程序。
常见模式可以给您一些想法,您可以根据这些想法自行构建。
语法
使用[]
语法指定子元素。一开始这可能看起来很奇怪,但它有一些优点。这清楚地将属性与子元素分开,使代码更易读。它使用与列表或字典相同的__getitem__
方法实现。
安装
htpy可在PyPI上找到。您可以使用pip安装最新版本
pip install htpy
文档
完整文档可在htpy.dev找到
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
htpy-24.9.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ddafc31354e0226f86ccc4bd312b1592895441e43d2c07b6b9e3168267294b3b |
|
MD5 | 2bc89bc06cf54a29bf98ebf0f3449310 |
|
BLAKE2b-256 | cfacb0e140997a899a70a10d63a2e56a32ed14cdb5e92af05ae2039a4e1b86ec |
htpy-24.9.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e19975b193943122e2020a7c0cb93cf7ed5fa44bd4a9fbf4e71f1bd09ec5ae8d |
|
MD5 | 12286393f48dc20f7c579f1f83fd4755 |
|
BLAKE2b-256 | 237a7882148eefe96102d948d9e27c8a965d69b7eacc6090c728762788e3d4ed |