mirror of
https://github.com/django-components/django-components.git
synced 2025-11-17 13:52:56 +00:00
Some checks are pending
Docs - build & deploy / docs (push) Waiting to run
Run tests / build (ubuntu-latest, 3.10) (push) Waiting to run
Run tests / build (ubuntu-latest, 3.11) (push) Waiting to run
Run tests / build (ubuntu-latest, 3.12) (push) Waiting to run
Run tests / build (ubuntu-latest, 3.13) (push) Waiting to run
Run tests / build (ubuntu-latest, 3.8) (push) Waiting to run
Run tests / build (ubuntu-latest, 3.9) (push) Waiting to run
Run tests / build (windows-latest, 3.10) (push) Waiting to run
Run tests / build (windows-latest, 3.11) (push) Waiting to run
Run tests / build (windows-latest, 3.12) (push) Waiting to run
Run tests / build (windows-latest, 3.13) (push) Waiting to run
Run tests / build (windows-latest, 3.8) (push) Waiting to run
Run tests / build (windows-latest, 3.9) (push) Waiting to run
Run tests / test_docs (3.13) (push) Waiting to run
Run tests / test_sampleproject (3.13) (push) Waiting to run
1.8 KiB
1.8 KiB
Error handling
The built-in ErrorFallback component catches errors during component rendering and displays fallback content instead. This is similar to React's ErrorBoundary component.
In this scenario, we have a WeatherWidget component that simulates fetching data from a weather API,
which we wrap in the built-in ErrorFallback component.
We have two cases:
- API call succeeds. The
WeatherWidgetcomponent renders the weather information as expected. - API call fails. The
ErrorFallbackcomponent catches the error and display a user-friendly message instead of breaking the page.
{% component "error_fallback" %}
{% fill "content" %}
{% component "weather_widget" location="Atlantis" / %}
{% endfill %}
{% fill "fallback" %}
<p style="color: red;">
Could not load weather data for <strong>Atlantis</strong>.
The location may not be supported or the service is temporarily down.
</p>
{% endfill %}
{% endcomponent %}
Definition
--8<-- "docs/examples/error_fallback/component.py"
Example
To see the component in action, you can set up a view and URL pattern as shown below.
views.py
--8<-- "docs/examples/error_fallback/page.py"
urls.py
from django.urls import path
from examples.pages.error_fallback import ErrorFallbackPage
urlpatterns = [
path("examples/error_fallback", ErrorFallbackPage.as_view(), name="error_fallback"),
]
