Маршрутизация¶
FastUI использует маршрутизацию на основе URL-паттернов с типизированными параметрами.
Базовые паттерны¶
Статические пути¶
Параметры пути¶
@app.page("/user/{id:int}")
def user_profile(id: int): ...
@app.page("/hello/{name}")
def greet(name: str): ...
@app.page("/post/{year:int}/{slug}")
def blog_post(year: int, slug: str): ...
Типы параметров¶
| Паттерн | Тип | Пример URL | В обработчике |
|---|---|---|---|
{name} |
str |
/hello/world |
name='world' |
{id:int} |
int |
/user/42 |
id=42 |
{slug} |
str |
/post/hello |
slug='hello' |
Порядок маршрутов¶
Маршруты проверяются в порядке регистрации. Первый совпавший выигрывает:
@app.page("/user/latest") # проверяется первым
def latest_user(): ...
@app.page("/user/{id:int}") # проверяется вторым
def user_profile(id: int): ...
Запрос к /user/latest попадёт на первый маршрут, а не на второй.
Заголовок страницы¶
Параметр title устанавливает HTML-тег <title>:
Summary & Description¶
Параметры summary и description обогащают OpenAPI-схему:
@app.page(
"/",
summary="Application home page",
description="The main entry point showing links to all sections.",
)
def home(): ...
Если не указаны, извлекаются из docstring обработчика (первая строка → summary, остальное → description).
Теги¶
Параметр tags группирует маршруты в документации:
Редирект с 404¶
Используйте @app.setter(primary_page=True), чтобы перенаправлять неизвестные URL на нужную страницу. Декоратор ставится под @app.page():
@app.page("/")
@app.setter(primary_page=True)
def home():
return [ui.heading("Home", level=1)]
@app.page("/about")
def about():
return [ui.heading("About", level=1)]
Теперь любой запрос к несуществующему пути (например /xyz) редиректит на /.
Только один маршрут может быть целью редиректа. Повторное @app.setter(primary_page=True) вызывает ошибку.
Далее¶
Переходите к разделу Серверные действия.