+ Searching for Pynecone? You are in the right repo. Pynecone has been renamed to Reflex. +
英语 | 简体中文 | 繁体中文 |土耳其 | हिंदी |葡萄牙语(巴西)|意大利 | | 西班牙语 | 한국어 | 日本语 |德语 |波斯语 (پר) |越南
Reflex 是一个用纯 Python 构建全栈 Web 应用程序的库。
主要特点:
请参阅我们的架构页面,了解 Reflex 的底层工作原理。
打开终端并运行(需要 Python 3.9+):
pip install reflex
安装reflex
还会安装reflex
命令行工具。
通过创建新项目来测试安装是否成功。 (将my_app_name
替换为您的项目名称):
mkdir my_app_name
cd my_app_name
reflex init
此命令会在新目录中初始化模板应用程序。
您可以在开发模式下运行此应用程序:
reflex run
您应该看到您的应用程序在 http://localhost:3000 上运行。
现在您可以修改my_app_name/my_app_name.py
中的源代码。 Reflex 具有快速刷新功能,因此您可以在保存代码时立即看到更改。
让我们看一个例子:围绕 DALL·E 创建一个图像生成 UI。为简单起见,我们仅调用 OpenAI API,但您可以将其替换为本地运行的 ML 模型。
这是创建它的完整代码。这一切都在一个 Python 文件中完成!
import reflex as rx
import openai
openai_client = openai . OpenAI ()
class State ( rx . State ):
"""The app state."""
prompt = ""
image_url = ""
processing = False
complete = False
def get_image ( self ):
"""Get the image from the prompt."""
if self . prompt == "" :
return rx . window_alert ( "Prompt Empty" )
self . processing , self . complete = True , False
yield
response = openai_client . images . generate (
prompt = self . prompt , n = 1 , size = "1024x1024"
)
self . image_url = response . data [ 0 ]. url
self . processing , self . complete = False , True
def index ():
return rx . center (
rx . vstack (
rx . heading ( "DALL-E" , font_size = "1.5em" ),
rx . input (
placeholder = "Enter a prompt.." ,
on_blur = State . set_prompt ,
width = "25em" ,
),
rx . button (
"Generate Image" ,
on_click = State . get_image ,
width = "25em" ,
loading = State . processing
),
rx . cond (
State . complete ,
rx . image ( src = State . image_url , width = "20em" ),
),
align = "center" ,
),
width = "100%" ,
height = "100vh" ,
)
# Add state and page to the app.
app = rx . App ()
app . add_page ( index , title = "Reflex:DALL-E" )
让我们从用户界面开始。
def index ():
return rx . center (
...
)
此index
函数定义应用程序的前端。
我们使用不同的组件(例如center
、 vstack
、 input
和button
来构建前端。组件可以相互嵌套以创建复杂的布局。您可以使用关键字参数来利用 CSS 的全部功能来设置它们的样式。
Reflex 附带 60 多个内置组件来帮助您入门。我们正在积极添加更多组件,并且您可以轻松创建自己的组件。
Reflex 将您的 UI 表示为您状态的函数。
class State ( rx . State ):
"""The app state."""
prompt = ""
image_url = ""
processing = False
complete = False
状态定义了应用程序中可以更改的所有变量(称为 vars)以及更改它们的函数。
这里的状态由prompt
和image_url
组成。还有布尔值processing
和complete
,以指示何时禁用按钮(在图像生成期间)以及何时显示结果图像。
def get_image ( self ):
"""Get the image from the prompt."""
if self . prompt == "" :
return rx . window_alert ( "Prompt Empty" )
self . processing , self . complete = True , False
yield
response = openai_client . images . generate (
prompt = self . prompt , n = 1 , size = "1024x1024"
)
self . image_url = response . data [ 0 ]. url
self . processing , self . complete = False , True
在状态内,我们定义称为事件处理程序的函数来更改状态变量。事件处理程序是我们修改 Reflex 状态的方式。可以调用它们来响应用户操作,例如单击按钮或在文本框中键入。这些动作称为事件。
我们的DALL·E。应用程序有一个事件处理程序get_image
,用于从 OpenAI API 获取此图像。在事件处理程序中使用yield
将导致UI 更新。否则,UI 将在事件处理程序结束时更新。
最后,我们定义我们的应用程序。
app = rx . App ()
我们将应用程序根目录中的页面添加到索引组件中。我们还添加了一个将显示在页面预览/浏览器选项卡中的标题。
app . add_page ( index , title = "DALL-E" )
您可以通过添加更多页面来创建多页面应用程序。
?文档 | ?️ 博客 | 组件库 | ?️ 模板 | ?部署
Reflex 于 2022 年 12 月推出,名称为 Pynecone。
截至 2024 年 2 月,我们的托管服务处于 alpha 阶段!在此期间,任何人都可以免费部署他们的应用程序。请参阅我们的路线图以了解计划内容。
Reflex 每周都会发布新版本和新功能!确保加注星标并 ?请关注此存储库以保持最新状态。
我们欢迎任何规模的贡献!以下是一些开始加入 Reflex 社区的好方法。
我们正在积极寻找贡献者,无论您的技能水平或经验如何。要贡献请查看 CONTIBUTING.md
Reflex 是开源的,并根据 Apache License 2.0 获得许可。