实践reflex:以Personalized Sales个人销售网站为例

2024-09-05 18:36

本文主要是介绍实践reflex:以Personalized Sales个人销售网站为例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 reflex 是一个使用纯Python构建全栈web应用的库,但是需要使用node,所以你懂的。

官网:Reflex · Web apps in Pure Python

手册:Introduction

Pynecone: Pynecone 是一个全栈 Python 框架,可以使用纯 Python 构建高性能、可自定义的 Web 应用程序 - Gitee.com

reflex安装:实践reflex:一个使用纯Python构建全栈web应用的库-CSDN博客

 安装完成后,初始化:

skyw@ubjail1:~$ mkdir app1
sky@ubjail1:~$ cd app1
sky@ubjail1:~/app1$ reflex init

初始化时选择(2) sales (https://sales-new.reflex.run/) - An app to manage sales 
and customers

reflex init[06:11:11] Initializing the web directory.           console.py:104Get started with a template:
(0) blank (https://blank-template.reflex.run) - A minimal template
(1) dashboard (https://dashboard-new.reflex.run/) - A dashboard 
with tables and graphs
(2) sales (https://sales-new.reflex.run/) - An app to manage sales 
and customers
(3) ai_image_gen (https://ai-image-gen.reflex.run/) - An app to 
generate images using AI
(4) ci_template (https://cijob.reflex.run/) - A template for 
continuous integration
(5) api_admin_panel (https://api-admin-panel.reflex.run/) - An 
admin panel for an api.
(6) nba (https://nba-new.reflex.run/) - A data visualization app 
for NBA data.
(7) customer_data_app (https://customer-data-app.reflex.run/) - An 
app to manage customer data.
Which template would you like to use? (0): [06:11:24] Initializing the app directory.           console.py:104
Success: Initialized app1

 初始化完成后,启动服务:

reflex run─────────────────────── Starting Reflex App ───────────────────────00h00m00s 0/0: : 

然后可以使用http://192.168.0.13:3001打开网站(默认是3000和8000,如果有多个网站,会自动向后顺延)

解读代码:

代码在项目的子目录里,比如app2这个项目,代码在~/app2/app2/app2.py文件里:

import reflex as rx
from .views.navbar import navbar
from .views.email import email_gen_ui
from .views.table import main_table
from .backend.backend import Statedef index() -> rx.Component:return rx.vstack(navbar(),rx.flex(rx.box(main_table(), width=["100%", "100%", "100%", "60%"]),email_gen_ui(),spacing="6",width="100%",flex_direction=["column", "column", "column", "row"],),height="100vh",bg=rx.color("accent", 1),width="100%",spacing="6",padding_x=["1.5em", "1.5em", "3em"],padding_y=["1em", "1em", "2em"],)app = rx.App(theme=rx.theme(appearance="light", has_background=True, radius="large", accent_color="blue"),
)
app.add_page(index,on_load=State.load_entries,title="Sales App",description="Generate personalized sales emails.",
)

 定义前端

def index():return rx.center(...)

我们用不同的组件比如 centervstackinput, 和 button 来创建前端, 组件之间可以相互嵌入,来创建复杂的布局. 并且可以使用关键字参数来使用 CSS 的全部功能.

Reflex 拥有 60+ 个内置组件 来帮助您开始创建应用程序. 我们正在积极添加组件, 但是您也可以容易的 创建自己的组件.

State状态

Reflex 用 State 来渲染 UI. 上面代码中没有涉及State,下面是一个例子,创建一个State的类,包括prompt\image_url\processing\complete等信息

class State(rx.State):"""The app state."""prompt = ""image_url = ""processing = Falsecomplete = False

Event Handlers事件处理

def get_image(self):"""Get the image from the prompt."""if self.prompt == "":return rx.window_alert("Prompt Empty")self.processing, self.complete = True, Falseyieldresponse = openai_client.images.generate(prompt=self.prompt, n=1, size="1024x1024")self.image_url = response.data[0].urlself.processing, self.complete = False, True

Reflex中,事件处理器是我们可以修改状态的方式.它们可以作为对用户操作的响应而被调用,例如点击一个按钮或在文本框中输入.这些操作被称为事件。比如这个就是ai图片生成的一个事件处理函数。

Routing

最后,定义路由

app = rx.App()

添加从应用程序根目录到 index 组件的路由.我们还添加了一个在页面预览或浏览器标签中显示的标题.

app.add_page(index, title="DALL-E")

这篇关于实践reflex:以Personalized Sales个人销售网站为例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1139749

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按