# Django 5.2.8 documentation

# Skriva din första Django-app, del 6

Denna handledning börjar där Tutorial 5 slutade. Vi har byggt en testad applikation för webbenkäter och nu ska vi lägga till en stilmall och en bild.

Förutom den HTML som genereras av servern behöver webbapplikationer i allmänhet servera ytterligare filer - till exempel bilder, JavaScript eller CSS - som krävs för att rendera hela webbsidan. I Django hänvisar vi till dessa filer som ”statiska filer”.

För små projekt är det inte så farligt, eftersom du kan förvara de statiska filerna någonstans där din webbserver kan hitta dem. Men i större projekt - särskilt de som består av flera appar - börjar det bli knepigt att hantera de flera uppsättningar statiska filer som tillhandahålls av varje applikation.

Det är vad `django.contrib.staticfiles` är till för: det samlar statiska filer från var och en av dina applikationer (och alla andra platser du anger) till en enda plats som enkelt kan serveras i produktion.

Var du kan få hjälp:

Om du har problem med att gå igenom den här handledningen kan du gå till avsnittet Att få hjälp i FAQ.

## Anpassa din apps utseende och känsla

Först skapar du en katalog som heter `static` i din `polls`-katalog. Django kommer att leta efter statiska filer där, på samma sätt som Django hittar mallar i `polls/templates/`.

Djangos inställning `STATICFILES_FINDERS` innehåller en lista över sökare som vet hur man upptäcker statiska filer från olika källor. Ett av standardvärdena är `AppDirectoriesFinder` som letar efter en ”statisk” underkatalog i varje `INSTALLED_APPS`, som den i `polls` som vi just skapade. Admin-webbplatsen använder samma katalogstruktur för sina statiska filer.

I katalogen `static` som du just har skapat, skapar du en annan katalog som heter `polls` och i den skapar du en fil som heter `style.css`. Med andra ord bör din stilmall finnas på `polls/static/polls/style.css`. På grund av hur `AppDirectoriesFinder` staticfile finder fungerar kan du hänvisa till den här statiska filen i Django som `polls/style.css`, på samma sätt som du refererar till sökvägen för mallar.

Namnavstånd för statiska filer

Precis som med mallar skulle vi måhända kunna komma undan med att lägga våra statiska filer direkt i `polls/static` (istället för att skapa en annan `polls` underkatalog), men det skulle faktiskt vara en dålig idé. Django kommer att välja den första statiska filen den hittar vars namn matchar, och om du hade en statisk fil med samma namn i en annan applikation skulle Django inte kunna skilja mellan dem. Vi måste kunna peka Django på den rätta, och det bästa sättet att säkerställa detta är genom att namespacing dem. Det vill säga genom att lägga dessa statiska filer i en annan katalog som heter för själva applikationen.

Lägg till följande kod i den stilmallen (`polls/static/polls/style.css`):

`polls/static/polls/style.css`

    li a {
        color: green;
    }

Lägg sedan till följande längst upp i `polls/templates/polls/index.html`:

`polls/templates/polls/index.html`

    {% load static %}

    <link rel="stylesheet" href="{% static 'polls/style.css' %}">

Malltaggen `{% static %}` genererar den absoluta URL:en för statiska filer.

Det är allt du behöver göra för utveckling.

Starta servern (eller starta om den om den redan är igång):

/ 

    $ python manage.py runserver

    ...\> py manage.py runserver

Ladda om `http://localhost:8000/polls/` och du bör se att frågelänkarna är gröna (Django-stil!), vilket innebär att din stilmall laddades korrekt.

## Lägga till en bakgrundsbild

Nu ska vi skapa en underkatalog för bilder. Skapa en underkatalog med namnet `images` i katalogen `polls/static/polls/`. I den här katalogen lägger du till alla bildfiler som du vill använda som bakgrund. I den här handledningen använder vi en fil med namnet `background.png`, som kommer att ha den fullständiga sökvägen `polls/static/polls/images/background.png`.

Lägg sedan till en referens till din bild i din stilmall (`polls/static/polls/style.css`):

`polls/static/polls/style.css`

    body {
        background: white url("images/background.png") no-repeat;
    }

Ladda om `http://localhost:8000/polls/` och du bör se bakgrunden laddad längst upp till vänster på skärmen.

Varning

Malltaggen `{% static %}` är inte tillgänglig för användning i statiska filer som inte genereras av Django, som din stilmall. Du bör alltid använda relativa sökvägar för att länka dina statiska filer mellan varandra, eftersom du då kan ändra `STATIC_URL` (som används av `static` malltaggen för att generera dess webbadresser) utan att behöva ändra en massa sökvägar i dina statiska filer också.

Dessa är de grundläggande. För mer information om inställningar och andra bitar som ingår i ramverket, se the static files howto och the staticfiles reference. Deploying static files diskuterar hur man använder statiska filer på en riktig server.

När du känner dig bekväm med de statiska filerna kan du läsa del 7 av denna handledning för att lära dig hur du anpassar Djangos automatiskt genererade administratörssida.