跳转到主要内容

使用 Jinga2、FastAPI、Pydantic、htmx 和一点魔法快速构建 UI

项目描述

概述

QuikUI 是一个库,用于将 Pydantic 模型以 HTML 组件的形式进行上下文服务器端渲染,使用 Jinja2 进行模板渲染,旨在与基于 FastAPI 的应用程序无缝协作。QuikUI 的主要优点之一是,它允许您通过在您的模型类层次结构中仅通过继承 quikui.BaseComponent 来创建完全定制的 HTML,从而使您可以通过仅添加 quikui.render_component 装饰器轻松地将 HTML 渲染集成到现有的 FastAPI 应用程序中。此外,这种渲染是上下文相关的,它使用 FastAPI 请求的启发式方法,即如果网络浏览器向您的应用程序中的受支持端点发出请求,则应用程序将以渲染的 HTML 响应,而不是将您的模型转换为 JSON。

安装

要安装 QuikUI,请使用 pip 或您喜欢的包安装工具

$ pip install quikui

示例

我们在本存储库中有示例,您可以通过以下方式运行

uvicorn example:app

用法

建议您在您的层次结构的基类中继承 quikui.BaseComponent,这样您就可以配置自己的模板目录

import quikui as qk


class Component(qk.BaseComponent):
    html_template_package = "your_package_name"
    # a folder called `templates/` under this package should contain your html templates


# Now you can subclass `Component` to enable rendering of your models.

模型根据其类名进行渲染,因此如果您有一个类似

class MyModel(Component, ...):
    a_field: str = Field(...)  # Works with any Pydantic Model type
    ...

的类,那么预计在您的包的模板目录下将有一个名为 MyModel.html 的文件

{# This is a Jinj2 template #}
{{ __component_name__ }} {{ __extra_attrs__ }}
  {{ a_field }}
...

模板可以使用您的模型中的任何命名字段(类型不会转换,因此请相应处理),或者可以使用QuikUI提供的字段__component_name__(模型的名称,例如MyModel)和__extra_attrs__(这是以k="v"格式渲染的"安全"HTML属性字符串,包括class属性)。

此外,当子类化时,还有两个字段被注入到您的模型中(通过model_dumpmodel_dump_json导出模型时这些字段是隐藏的),您可以使用这些字段来自定义对象:attrs=dict(...)(HTML5兼容的字符串属性名称到字符串或布尔值的映射)和css=set(...)(要连接的字符串CSS类名集)。

贡献

打开问题

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

QuikUI-0.2.0b0.tar.gz (21.5 kB 查看哈希值

上传时间

构建分布

QuikUI-0.2.0b0-py3-none-any.whl (21.6 kB 查看哈希值

上传时间 Python 3

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面