# Redirecting `Unicorn` has a few different ways to redirect from an action method. ## Redirect To redirect the user, return a `HttpResponseRedirect` from an action method. Using the Django shortcut [`redirect`](https://docs.djangoproject.com/en/stable/topics/http/shortcuts/#redirect) method is one way to do that in a typical Django manner. ```{note} `django.shortcuts.redirect` can take a Django model, Django view name, an absolute url, or a relative url. However, the `permanent` kwarg for `redirect` has no bearing in this context. ``` ```{tip} It is not required to use `django.shortcuts.redirect`. Anything that returns a `HttpResponseRedirect` will behave the same in `Unicorn`. ``` ```python # redirect.py from django.shortcuts import redirect from django_unicorn.components import UnicornView from .models import Book class BookView(UnicornView): title = "" def save_book(self): book = Book(title=self.title) book.save() self.reset() return redirect(f"/book/{book.id}") ``` ```html

``` ## HashUpdate To avoid a server-side page refresh and just update the hash at the end of the url, return `HashUpdate` from the action method. ```python # hash_update.py from django_unicorn.components import HashUpdate, UnicornView from .models import Book class BookView(UnicornView): title = "" def save_book(self): book = Book(title=self.title) book.save() self.reset() return HashUpdate(f"#{book.id}") ``` ```html

``` ## LocationUpdate To avoid a server-side page refresh and update the whole url, return a `LocationUpdate` from the action method. `LocationUpdate` is instantiated with a `HttpResponseRedirect` arg and an optional `title` kwarg. ```{note} `LocationUpdate` uses [`window.history.pushState`](https://developer.mozilla.org/en-US/docs/Web/API/History/pushState) so the new url must be relative or the same origin as the original url. ``` ```python # location_update.py from django.shortcuts import redirect from django_unicorn.components import LocationUpdate, UnicornView from .models import Book class BookView(UnicornView): title = "" def save_book(self): book = Book(title=self.title) book.save() self.reset() return LocationUpdate(redirect(f"/book/{book.id}"), title=f"{book.title}") ``` ```html

```