Messages#
Unicorn
supports Django messages and they work the same as if the template was rendered server-side. When the update
action is fired, a success message will be added to the request and will show up inside the component.
<!-- messages.html --> <div> {% if messages %} <ul class="messages"> {% for message in messages %} <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li> {% endfor %} </ul> {% endif %} <button unicorn:click="update">Update</button> </div>
# messages.py from django.contrib import messages from django_unicorn.components import UnicornView class MessagesView(UnicornView): def update(self): messages.success(self.request, "update called")
Redirecting#
When the action returns a redirect
, Unicorn
will defer the messages so they do not get rendered in the component (since the user will never see the re-rendered component). Once the redirect has happened messages
will be available for rendering by the template as expected.
<!-- messages-when-redirecting.html --> <div> <button unicorn:click="update">Update</button> </div>
<!-- new-url.html --> {% if messages %} <ul class="messages"> {% for message in messages %} <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li> {% endfor %} </ul> {% endif %}
# messages_when_redirecting.py from django.contrib import messages from django.shortcuts import redirect from django_unicorn.components import UnicornView class MessagesWhenRedirectingView(UnicornView): def update(self): messages.success(self.request, "update called") return redirect("new-url")