Die letzte Lektion. Du siehst, wie du deine UI-Funktionen mit echten Webadressen verknüpfst, und baust anschließend aus allem, was du in Lektion 1 bis 5 gelernt hast, eine kleine App.
Eine Reflex-App erstellst du mit rx.App, und mit add_page verknüpfst du UI-Funktionen mit Webadressen (Routes).
def index():
return rx.text("Root Page")
app = rx.App()
app.add_page(index, route="/")app = rx.App() muss auf oberster Ebene der Hauptdatei stehen. Reflex sucht die App unter dem Namen app.route="/" ist die Startseite der Website. Weitere Seiten fügst du einfach hinzu, etwa mit app.add_page(about, route="/about").route weg, wird der Funktionsname zur Adresse: index wird zu /, about zu /about.Ein Korb, in den du per Button Obst legst und wieder herausnimmst. Er ist kurz, enthält aber alle Konzepte dieses Kurses.
FRUITS = ["Apple", "Banana", "Cherry", "Grape", "Mango", "Peach"]
class BasketState(rx.State):
basket: list[str] = []
@rx.event
def add_fruit(self):
# Event handlers run real Python: pick the next fruit in the list.
self.basket.append(FRUITS[len(self.basket) % len(FRUITS)])
@rx.event
def remove_last(self):
if self.basket:
self.basket.pop()
def fruit_basket():
return rx.vstack(
rx.hstack(
rx.heading("My basket", as_="h2", size="5"),
# Var operations: .length() and % work on vars in components.
rx.badge(BasketState.basket.length()),
rx.cond(
BasketState.basket.length() % 2 == 0,
rx.badge("even", color_scheme="green"),
rx.badge("odd", color_scheme="orange"),
),
align="center",
),
rx.cond(
BasketState.basket.length() > 0,
rx.list.unordered(rx.foreach(BasketState.basket, rx.list.item)),
rx.text("The basket is empty.", color_scheme="gray"),
),
rx.hstack(
rx.button("Add fruit", on_click=BasketState.add_fruit),
rx.button("Remove last", on_click=BasketState.remove_last, variant="soft"),
),
align="start",
)
app = rx.App()
app.add_page(fruit_basket, route="/")localhost:3000
AusprobierenThe basket is empty.
Gehen wir durch, in welcher Lektion du die einzelnen Teile des Codes kennengelernt hast.
| Code | Konzept | Lektion |
|---|---|---|
basket: list[str] = [] | State-Var für veränderliche Daten | Lektion 1 |
on_click=BasketState.add_fruit | Event-Trigger und Handler | Lektion 1 |
rx.cond(... > 0, liste, "empty") | Bedingtes Rendering | Lektion 2 |
rx.foreach(BasketState.basket, rx.list.item) | Listen-Rendering. Du kannst auch direkt eine Komponentenfunktion übergeben | Lektion 3 |
len(self.basket) und if im Handler | Echtes Python zur Laufzeit | Lektion 4 |
.length() und % 2 == 0 in der Oberfläche | Var-Operationen zur Kompilierzeit | Lektion 4 |
variant="soft", color_scheme="gray" | Gestalten mit Props | Lektion 5 |
app.add_page(fruit_basket, route="/") | Seite registrieren | Lektion 6 |
Achte darauf, dass dasselbe len im Handler funktioniert, in der Oberfläche aber zu .length() wird. Wenn du die Frage aus Lektion 4, „Wann läuft dieser Code?“, beantworten kannst, beherrschst du die Reflex-Grundlagen.
Die Grundlagen sitzen, jetzt ist es Zeit für eine richtige App.
add_fruit so, dass keine Obstsorte zweimal im Korb landet. Da du im Handler bist, kannst du if fruit not in self.basket verwenden.rx.cond.rx.App und add_page Seiten registrieren.Über neue Lektionen informiert werden
Wir schicken dir eine E-Mail, wenn dieser Kurs neue Lektionen bekommt oder ein Folgekurs erscheint.
R
ReflexKR
Python und Reflex zum Anfassen. Alle Beispiele wurden mit Reflex 0.10.0 ausgeführt und geprüft.
ReflexKR ist kostenlos und ohne Werbebanner. Wenn es dir geholfen hat, kannst du es mit einem Kaffee unterstützen. ☕ Spendier uns einen Kaffee
Hinweis zu Affiliate-Links© 2026 ReflexKR · Since 2026 · CC BY-NC 4.0
Fragen & Antworten
Frag alles zu dieser Lektion. Fragen aus allen Sprachversionen dieser Seite erscheinen hier gemeinsam.