Skip to main content

异步 Web 框架

项目描述

微笑

建造 文件状态 版本 执照

Dazzler 是一个用于 Python 的混合 UI 框架,用于创建桌面或 Web 应用程序。

使用AiohttpReactElectron构建。

安装

使用 pip 安装:$ pip install dazzler

特征

  • 基于 WebSocket 的快速通信,一次向数千个连接的客户端实时提供更新。
  • 使用 Electron 构建桌面应用程序。
  • 通过中间件支持第三方集成。
  • 会话和身份验证系统。
  • Tie & Transform API 在客户端执行更新。

快速开始

GitHub 模板快速入门

例子

创建具有布局的页面并分配绑定以使用会话系统保存和加载访问者姓名。如果没有通过 tie & transform 输入值,保存访客姓名的按钮将被禁用。

from dazzler import Dazzler
from dazzler.system import Page, BindingContext, CallContext, transforms as t
from dazzler.components import core

app = Dazzler(__name__)
page = Page(
    __name__,
    core.Container([
        core.Html('H2', 'My dazzler page'),
        core.Container('Please enter a name', identity='visitor-name'),
        core.Input(value='', identity='input'),
        core.Button('Save name', identity='save-btn', disabled=True),
    ], identity='layout', id='layout'),
    title='My Page',
    url='/'
)

# UI updates via tie & transforms
page.tie('value@input', 'disabled@save-btn').transform(
    t.Length().t(t.Lesser(1))
)


# Bindings executes on the server via websockets.
@page.bind('clicks@save-btn')
async def on_click(context: BindingContext):
    # Save the visitor name via session system
    name = await context.get_aspect('input', 'value')
    await context.session.set('visitor', name)
    await context.set_aspect(
        'visitor-name', children=f'Saved {name}'
    )


# Aspects defined on the layout trigger on initial render and
# allows to insert initial data.
# `call` executes via regular requests.
@page.call('id@layout')
async def on_layout(context: CallContext):
    visitor = await context.session.get('visitor')
    if visitor:
        await context.set_aspect(
            'visitor-name', children=f'Welcome back {visitor}!'
        )


app.add_page(page)

if __name__ == '__main__':
    app.start()

文档

托管在readthedocs上的完整文档。

获取命令行工具的帮助:$ dazzler --help

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

内置分布

dazzler-0.10.0-py3-none-any.whl (10.6 MB 查看哈希

已上传 py3