跳转到主要内容

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的生产力和体验。

主要功能

  • 利用静态类型: 使用mypypyright来检查您的代码。

  • 出色的调试: 避免从模板中出现的晦涩难懂的堆栈跟踪。使用您喜欢的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 (279.8 kB 查看哈希值)

上传时间

构建分布

htpy-24.9.1-py3-none-any.whl (12.0 kB 查看哈希值)

上传时间 Python 3

由以下支持