Skriva din första Django-app, del 6Link to this heading

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.

Anpassa din apps utseende och känslaLink to this heading

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.

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

polls/static/polls/style.css
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
Django template
{% 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):

Linux / macOS

Shell
$ python manage.py runserver

Windows

Windows
...\> 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 bakgrundsbildLink to this heading

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
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.

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.