Traducción automática supervisada
Este contenido se traduce mediante generación automática guiada por glosarios y guías de estilo revisados por personas. Dado que el texto no se revisa manualmente línea por línea, pueden producirse errores ocasionales o expresiones poco naturales.
En caso de cualquier discrepancia, la versión en inglés constituye la autoridad y la fuente de referencia.
Widgets
Referencia completa de atributos y métodos del sistema de widgets, generada a partir de las docstrings. Para una guía orientada a tareas, consulte Custom Views & Widgets y Form Layouts.
Los widgets son bloques de construcción componibles y renderizables que se utilizan para construir elementos de interfaz de forma dinámica. Cada clase de widget que se enumera a continuación puede importarse directamente desde starlette_admin.
El sistema de widgets cumple dos funciones principales según el contexto:
- Dashboards y páginas personalizadas: Se utiliza como el atributo
widgetdeCustomViewpara construir interfaces independientes y paneles de métricas. - Diseños de formularios: Se utiliza como el atributo
form_layoutdeBaseModelViewpara organizar y agrupar los campos de entrada en los formularios de creación y edición.
Clase base
Todos los widgets heredan de una clase base común que define la interfaz estándar de renderizado y recopilación de recursos.
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 contenido
Los widgets de contenido actúan como los nodos hoja de su árbol de interfaz. En lugar de contener otros widgets, muestran datos en tiempo real. Cada widget de contenido acepta un callback asíncrono que se invoca una vez por solicitud, lo que garantiza que los valores renderizados estén siempre actualizados.
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 diseño
Los widgets de diseño son contenedores que se utilizan para organizar sus children (que pueden ser widgets de contenido, campos de formulario u otros widgets de diseño).
Gestión automática de recursos: Los widgets de diseño recorren recursivamente su árbol para recopilar los additional_css_links y additional_js_links de sus hijos. Esto garantiza que los componentes profundamente anidados carguen automáticamente los recursos CSS/JS que necesitan, sin necesidad de cableado manual.
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
Dimensionamiento responsivo
Clases de utilidad dedicadas a gestionar comportamientos de cuadrícula responsiva, anchos de columna y breakpoints en diferentes tamaños de pantalla.
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
Referencias de campos en diseños de formularios
Widgets especializados que se utilizan exclusivamente en el contexto de formularios de modelos para hacer referencia a campos específicos de la base de datos.
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
Abreviaturas y normalización
Para mantener su código de diseño limpio y altamente legible, los widgets contenedores aceptan tipos simples de Python en lugar de instanciaciones explícitas de clases de widget. Durante la inicialización (__post_init__), los contenedores resuelven automáticamente estos valores abreviados en sus contrapartes de widget correspondientes.
Abreviaturas admitidas:
str: Se resuelve en una referencia de campo (FieldRef).tuple: Se resuelve en una fila lado a lado (RowWidget).list: Se resuelve en una pila vertical (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
Funciones auxiliares
Funciones de utilidad para renderizar widgets dentro de plantillas Jinja2 o contextos personalizados.
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.