+ Searching for Pynecone? You are in the right repo. Pynecone has been renamed to Reflex. +
английский | 简体中文 | 繁體中文 | тюркче | हिंदी | Португалия (Бразилия) | Итальяно | испанский | 한국어 | 日本語 | немецкий | Персидский (پارسی) | Тианг Вьет
Reflex — это библиотека для создания полнофункциональных веб-приложений на чистом Python.
Ключевые особенности:
Посетите нашу страницу об архитектуре, чтобы узнать, как работает 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. Для простоты мы просто вызываем OpenAI API, но вы можете заменить его моделью машинного обучения, запускаемой локально.
Вот полный код для его создания. Все это сделано в одном файле 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 представляет ваш пользовательский интерфейс как функцию вашего состояния.
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. Их можно вызывать в ответ на действия пользователя, например нажатие кнопки или ввод текста в текстовое поле. Эти действия называются событиями.
Наш ДАЛЛ·Э. Приложение имеет обработчик событий get_image
, в который получает это изображение из API OpenAI. Использование yield
в середине обработчика событий приведет к обновлению пользовательского интерфейса. В противном случае пользовательский интерфейс обновится в конце обработчика событий.
Наконец, мы определяем наше приложение.
app = rx . App ()
Добавляем страницу из корня приложения в индексный компонент. Мы также добавляем заголовок, который будет отображаться на вкладке предварительного просмотра страницы/браузера.
app . add_page ( index , title = "DALL-E" )
Вы можете создать многостраничное приложение, добавив больше страниц.
? Документы | ?️ Блог | Библиотека компонентов | ?️ Шаблоны | ? Развертывание
Reflex запущен в декабре 2022 года под названием Pynecone.
По состоянию на февраль 2024 года наш хостинг находится в стадии альфа-версии! В течение этого времени каждый может бесплатно развернуть свои приложения. Посмотрите нашу дорожную карту, чтобы узнать, что запланировано.
Каждую неделю в Reflex появляются новые выпуски и функции! Обязательно поставьте звездочку и ? следите за этим репозиторием, чтобы быть в курсе событий.
Мы приветствуем вклад любого размера! Ниже приведены несколько хороших способов начать работу в сообществе Reflex.
Мы активно ищем участников, независимо от вашего уровня навыков и опыта. Чтобы внести свой вклад, посетите CONTIBUTING.md
Reflex имеет открытый исходный код и лицензируется по лицензии Apache License 2.0.