# Django 5.2.8 documentation

# Appen för omdirigeringar

Django levereras med en valfri redirects-applikation. Den låter dig lagra omdirigeringar i en databas och hanterar omdirigeringen åt dig. Den använder HTTP-svarsstatuskoden `301 Moved Permanently` som standard.

## Installation

Följ dessa steg för att installera appen Redirects:

1. Se till att ramverket `django.contrib.sites` är installerat.

2. Lägg till `'django.contrib.redirects'` i inställningen `INSTALLED_APPS`.

3. Lägg till `'django.contrib.redirects.middleware.RedirectFallbackMiddleware'` till din `MIDDLEWARE` inställning.

4. Kör kommandot `manage.py migrate`.

## Hur det fungerar

`manage.py migrate` skapar en `django_redirect` tabell i din databas. Detta är en uppslagstabell med fälten `site_id`, `old_path` och `new_path`.

`RedirectFallbackMiddleware` gör allt arbete. Varje gång en Django-applikation ger upphov till ett 404-fel kontrollerar denna middleware omdirigeringsdatabasen för den begärda webbadressen som en sista utväg. Specifikt söker det efter en omdirigering med den givna `old_path` med ett webbplats-ID som motsvarar inställningen `SITE_ID`.

- Om den hittar en matchning och `new_path` inte är tom, omdirigeras den till `new_path` med en 301 (”Moved Permanently”) omdirigering. Du kan underordna `RedirectFallbackMiddleware` och ställa in `response_redirect_class` till `django.http.HttpResponseRedirect` för att använda en `302 Moved Temporarily`-omdirigering istället.

- Om den hittar en matchning och `new_path` är tom, skickar den en 410 (”Gone”) HTTP-header och ett tomt (innehållslöst) svar.

- Om den inte hittar någon matchning fortsätter begäran att behandlas som vanligt.

Middleware aktiveras endast för 404:or - inte för 500:or eller svar med någon annan statuskod.

Observera att ordningen på `MIDDLEWARE` spelar roll. I allmänhet kan du sätta `RedirectFallbackMiddleware` i slutet av listan, eftersom det är en sista utväg.

Mer information om middleware finns i middleware docs.

## Så här lägger du till, ändrar och tar bort omdirigeringar

### Via administratörsgränssnittet

Om du har aktiverat det automatiska Django-administratörsgränssnittet bör du se ett avsnitt ”Omdirigeringar” på adminindexsidan. Redigera omdirigeringar som du redigerar alla andra objekt i systemet.

### Via Python API

class models.Redirect

  Redirects representeras av en standard Django model, som finns i django/contrib/redirects/models.py. Du kan komma åt omdirigeringsobjekt via Django databas API. Till exempel:

      >>> from django.conf import settings
      >>> from django.contrib.redirects.models import Redirect
      >>> # Add a new redirect.
      >>> redirect = Redirect.objects.create(
      ...     site_id=1,
      ...     old_path="/contact-us/",
      ...     new_path="/contact/",
      ... )
      >>> # Change a redirect.
      >>> redirect.new_path = "/contact-details/"
      >>> redirect.save()
      >>> redirect
      <Redirect: /contact-us/ ---> /contact-details/>
      >>> # Delete a redirect.
      >>> Redirect.objects.filter(site_id=1, old_path="/contact-us/").delete()
      (1, {'redirects.Redirect': 1})

## Middleware

class middleware.RedirectFallbackMiddleware

  Du kan ändra `HttpResponse`-klasserna som används av middleware genom att skapa en underklass av `RedirectFallbackMiddleware` och åsidosätta `response_gone_class` och/eller `response_redirect_class`.

  response_gone_class

    Klassen `HttpResponse` används när en `Redirect` inte hittas för den begärda sökvägen eller har ett tomt `new_path`-värde.

    Standardvärde för `HttpResponseGone`.

  response_redirect_class

    Klassen `HttpResponse` som hanterar omdirigeringen.

    Standardvärde för `HttpResponsePermanentRedirect`.