跳转到主要内容

异步Web框架

项目描述

Dazzler

Build Documentation Status Version License

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

AiohttpReactElectron构建。

安装

使用pip安装: $ pip install dazzler

功能

  • 基于WebSocket的快速通信,一次向成千上万的连接客户端实时传输更新。
  • 使用Electron构建桌面应用程序。
  • 通过中间件支持第三方集成。
  • 会话和身份验证系统。
  • 将API绑定到客户端以执行更新。

快速入门

使用GitHub模板快速入门

示例

创建一个具有布局的页面,并将绑定分配给通过会话系统保存和加载访问者姓名。如果未通过绑定和转换提供输入值,则保存访问者姓名的按钮将被禁用。

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 查看哈希值)

上传时间 Python 3

支持