Traduction automatique supervisée
Ce contenu est traduit à l'aide d'une génération automatique guidée par des glossaires et des guides de style élaborés par des humains. Le texte n'étant pas relu manuellement ligne par ligne, des erreurs ou des tournures maladroites peuvent occasionnellement apparaître.
En cas de divergence, la version anglaise constitue la source de référence.
Widgets
Référence complète des attributs et méthodes du système de widgets, générée à partir des docstrings. Pour une présentation orientée tâches, consultez Custom Views & Widgets et Form Layouts.
Les widgets sont des blocs de construction composables et affichables, utilisés pour construire dynamiquement des éléments d'interface. Chaque classe de widget répertoriée ci-dessous peut être importée directement depuis starlette_admin.
Le système de widgets remplit deux rôles principaux selon le contexte :
- Tableaux de bord & pages personnalisées : utilisé comme attribut
widgetdeCustomViewpour créer des interfaces autonomes et des tableaux de métriques. - Mises en page de formulaires : utilisé comme attribut
form_layoutdeBaseModelViewpour organiser et regrouper les champs sur les formulaires de création/édition.
Classe de base
Tous les widgets héritent d'une classe de base commune qui définit l'interface standard d'affichage et de collecte d'assets.
starlette_admin.widgets.BaseWidget
dataclass
Bases: ABC
Base class for all dashboard widgets.
Subclasses set template to a path under the theme's widgets/ directory
and override get_context to supply template variables. Layout widgets
should also override render to recursively render their children before
rendering their own template.
Source code in starlette_admin/widgets.py
additional_css_links(request)
additional_js_links(request)
render(request, env)
async
Render the widget to HTML using env.
Source code in starlette_admin/widgets.py
Widgets de contenu
Les widgets de contenu constituent les nœuds terminaux de votre arborescence d'interface. Au lieu de contenir d'autres widgets, ils affichent des données en direct. Chaque widget de contenu accepte un callback asynchrone invoqué une fois par requête, garantissant que les valeurs affichées sont toujours à jour.
starlette_admin.widgets.StatWidget
dataclass
Bases: BaseWidget
Renders a KPI stat card.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
title
|
str
|
Label shown as the card subheader. |
required |
value_callback
|
Callable[[Request], Awaitable[int | float | str]]
|
Async callable returning the primary metric value. |
required |
link
|
str | None
|
Optional URL; makes the entire card a clickable anchor. |
None
|
description
|
str
|
Secondary text shown below the value. |
''
|
description_icon
|
str
|
Icon class for the description badge
(e.g. |
''
|
color
|
str
|
Tabler color token applied to the description area
(e.g. |
''
|
description_icon_position
|
Literal['before', 'after']
|
|
'after'
|
chart_callback
|
Callable[[Request], Awaitable[dict[str, Any]]] | None
|
Optional async callable returning an ApexCharts |
None
|
chart_type
|
str
|
ApexCharts chart type for the sparkline (default |
'line'
|
chart_height
|
str
|
Height passed to ApexCharts (default |
'40px'
|
chart_options
|
dict[str, Any]
|
Extra ApexCharts options merged over the sparkline defaults. |
dict()
|
countup
|
bool
|
When |
False
|
Source code in starlette_admin/widgets.py
starlette_admin.widgets.ChartWidget
dataclass
Bases: BaseWidget
Renders an ApexCharts chart inside a Tabler card.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
title
|
str
|
Card heading. |
required |
chart_type
|
str
|
ApexCharts chart type, e.g. |
required |
series_callback
|
Callable[[Request], Awaitable[Any]]
|
Async callable returning the ApexCharts |
required |
height
|
int
|
Chart height in pixels (default |
300
|
options
|
dict[str, Any]
|
Extra ApexCharts config merged over the |
dict()
|
Source code in starlette_admin/widgets.py
starlette_admin.widgets.TableWidget
dataclass
Bases: BaseWidget
Renders a compact summary table from a data callback.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
title
|
str
|
Card heading displayed above the table. |
required |
columns
|
list[str]
|
List of column header labels. |
required |
rows_callback
|
Callable[[Request], Awaitable[list[list[Any]]]]
|
Async callable returning rows as a list of lists. |
required |
Source code in starlette_admin/widgets.py
starlette_admin.widgets.TextWidget
dataclass
Bases: BaseWidget
Renders a block of text, optionally as Markdown.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
content
|
str
|
Static markdown or plain text. |
required |
markdown
|
bool
|
Whether to render |
False
|
Source code in starlette_admin/widgets.py
starlette_admin.widgets.HtmlWidget
dataclass
Bases: BaseWidget
Renders an arbitrary block of pre-rendered HTML.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
html
|
str
|
Raw HTML string. It is marked safe and rendered without escaping. |
required |
Source code in starlette_admin/widgets.py
starlette_admin.widgets.DividerWidget
dataclass
Bases: BaseWidget
A horizontal rule / visual separator between other widgets.
Source code in starlette_admin/widgets.py
Widgets de mise en page
Les widgets de mise en page sont des conteneurs servant à agencer leurs children (qui peuvent être des widgets de contenu, des champs de formulaire ou d'autres widgets de mise en page).
Gestion automatique des assets : les widgets de mise en page parcourent récursivement leur arborescence afin de collecter les additional_css_links et additional_js_links de leurs enfants. Cela garantit que les composants profondément imbriqués chargent automatiquement les assets CSS/JS dont ils ont besoin, sans aucun câblage manuel.
starlette_admin.widgets.RowWidget
dataclass
Bases: BaseWidget
Arranges child widgets horizontally in a plain Bootstrap grid row.
Use CardRowWidget instead when every child is itself a card (KPI
stats, charts, tables) and should get Tabler's row-deck row-cards
equal-height-card treatment.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
children
|
list[BaseWidget | Col]
|
Widgets (or |
list()
|
Source code in starlette_admin/widgets.py
starlette_admin.widgets.CardRowWidget
dataclass
Bases: RowWidget
A RowWidget for rows of cards: same layout mechanics, plus
Tabler's row-deck row-cards classes so the cards in the row share a
consistent, equal height. Used for dashboard rows of StatWidget,
ChartWidget, TableWidget, etc.
Source code in starlette_admin/widgets.py
starlette_admin.widgets.ColumnWidget
dataclass
Bases: BaseWidget
Stacks child widgets vertically.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
children
|
list[BaseWidget]
|
Widgets to stack. Also accepts |
list()
|
Source code in starlette_admin/widgets.py
starlette_admin.widgets.GridWidget
dataclass
Bases: BaseWidget
Arranges child widgets in a responsive Bootstrap grid.
Uses Bootstrap's row-cols-* system: Tabler/Bootstrap handles all
responsive behavior; no custom <style> or media queries are emitted.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
children
|
list[BaseWidget]
|
Widgets to render in the grid. Also accepts
|
list()
|
breakpoints
|
Breakpoints
|
Items-per-row at each viewport size. |
(lambda: Breakpoints(default=1))()
|
gutter
|
int
|
Bootstrap gutter scale applied as |
3
|
Source code in starlette_admin/widgets.py
starlette_admin.widgets.PanelWidget
dataclass
Bases: BaseWidget
Wraps child widgets inside a titled card/panel.
When used in a form_layout and resolved down to exactly one visible
field, that field's label is hidden: the panel title already names it,
so the label would be redundant. See
BaseModelView.resolve_form_layout.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
title
|
str
|
Panel heading. |
required |
children
|
list[BaseWidget]
|
Widgets rendered inside the panel body. Also accepts
|
list()
|
collapsible
|
bool
|
Whether the panel can be collapsed. |
False
|
collapsed
|
bool
|
Initial collapsed state (only meaningful when collapsible). |
False
|
icon
|
str
|
Optional icon class for the panel header. |
''
|
Source code in starlette_admin/widgets.py
starlette_admin.widgets.FieldsetWidget
dataclass
Bases: BaseWidget
Wraps child widgets inside a native HTML <fieldset>/<legend>.
Use this instead of PanelWidget when you want the semantics and
plain styling of a form fieldset rather than a card: no shadow, no
header bar, just a bordered group with its legend as the caption.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
legend
|
str
|
Text rendered in the |
required |
children
|
list[BaseWidget]
|
Widgets rendered inside the fieldset. Also accepts
|
list()
|
disabled
|
bool
|
Sets the HTML |
False
|
Source code in starlette_admin/widgets.py
starlette_admin.widgets.TabsWidget
dataclass
Bases: BaseWidget
Renders child widgets as Bootstrap tabs.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tabs
|
list[tuple[str, BaseWidget]]
|
List of (tab_label, widget) tuples. A tab's |
list()
|
save_state
|
bool
|
Remember the last active tab in the browser's
|
True
|
Source code in starlette_admin/widgets.py
Dimensionnement adaptatif
Classes utilitaires dédiées à la gestion des comportements de grille adaptative, de la largeur des colonnes et des points de rupture selon les différentes tailles d'écran.
starlette_admin.widgets.Breakpoints
dataclass
Bootstrap breakpoint column sizes for Col and GridWidget.
Each field maps to a Bootstrap responsive infix. None (the default)
means the breakpoint is omitted from the generated class string.
For Col, the values are Bootstrap column spans (1-12), or the literal
"auto" for an equal-width flexible column ("col-md" rather than
"col-md-6"):
Breakpoints(default=12, md=6) -> "col-12 col-md-6"
Breakpoints(default=12, md="auto") -> "col-12 col-md"
For GridWidget, the values are items-per-row counts ("auto" does
not apply there):
Breakpoints(default=1, md=2, lg=3) -> "row-cols-1 row-cols-md-2 row-cols-lg-3"
Source code in starlette_admin/widgets.py
starlette_admin.widgets.Col
dataclass
Responsive column wrapper for children of RowWidget.
Wrap a child widget with Col to control its Bootstrap column span at
each viewport size. Omitting breakpoints (or leaving all fields
None) yields an auto col class.
widget accepts the same shorthand as any other widget slot (see
normalize_widget), so Col("email", Breakpoints(md=6)) is
equivalent to Col(FieldRef("email"), Breakpoints(md=6)).
Example::
Col(my_widget, breakpoints=Breakpoints(default=12, md=6))
# -> class="col-12 col-md-6"
Source code in starlette_admin/widgets.py
Références aux champs de formulaire
Widgets spécialisés, utilisés exclusivement dans le contexte des formulaires de modèle, pour référencer des champs spécifiques de la base de données.
starlette_admin.widgets.FieldRef
dataclass
Bases: BaseWidget
Leaf widget referencing a declared field by name, for use inside
BaseModelView.form_layout.
FieldRef("email") placed anywhere in a form_layout tree — bare,
or nested inside RowWidget, PanelWidget, TabsWidget, etc. —
means "render the declared email field here". It is not
self-sufficient: the _field/_value/_error attributes are
filled in by BaseModelView.resolve_form_layout from the current
request's obj/errors/field permissions before rendering, so a bare
FieldRef constructed and rendered outside that pipeline has nothing
to show.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Name of the declared field to render. |
required |
show_label
|
bool
|
Whether to render the field's |
True
|
prepend
|
str | None
|
Bootstrap/Tabler input-group addon rendered before the
input, e.g. |
None
|
append
|
str | None
|
Same as |
None
|
flat
|
bool
|
Render the input-group with Tabler's |
False
|
Source code in starlette_admin/widgets.py
Raccourcis & normalisation
Afin de garder votre code de mise en page propre et très lisible, les widgets conteneurs acceptent des types Python simples à la place d'instanciations explicites de classes de widgets. Lors de l'initialisation (__post_init__), les conteneurs résolvent automatiquement ces valeurs raccourcies en leur équivalent sous forme de widget approprié.
Raccourcis pris en charge :
str: résolu en une référence de champ (FieldRef).tuple: résolu en une ligne côte à côte (RowWidget).list: résolu en une pile verticale (ColumnWidget).
starlette_admin.widgets.WidgetShorthand = 'BaseWidget | str | tuple[Any, ...] | list[Any]'
module-attribute
Anything a container widget's children (or Col.widget, or a
TabsWidget tab's widget) will accept in place of an already-built
BaseWidget. See normalize_widget for what each shorthand expands to.
starlette_admin.widgets.normalize_widget(node)
Expand a shorthand WidgetShorthand into a real widget.
A bare str becomes a FieldRef referencing the declared field of
that name. A tuple becomes a RowWidget with each item in its own
Col, full width below the md breakpoint and equal width at md and
above (matching how a single item renders full width on its own); if
every item resolves to a StatWidget, a CardRowWidget is used instead
so the cards get the row-deck equal-height treatment. A list becomes a
ColumnWidget stacking each item vertically. Anything else is assumed
to already be a BaseWidget and is returned unchanged.
Each item handed to the resulting RowWidget/ColumnWidget is itself
shorthand-typed, so nesting (a tuple inside a list, a list inside a
tuple, and so on) is expanded in turn by that container's own
__post_init__ when it is constructed below: no explicit recursion is
needed here.
Source code in starlette_admin/widgets.py
Fonctions auxiliaires
Fonctions utilitaires permettant d'afficher des widgets dans des templates Jinja2 ou dans des contextes personnalisés.
starlette_admin.widgets.render_widget(widget, request, env)
async
Render widget to HTML using env.
This is a convenience helper for custom views that want to render widgets
outside of the default CustomView.widget flow.