FRÅGOR OCH SVAR: Att använda Django¶
Varför får jag ett felmeddelande om att jag importerar DJANGO_SETTINGS_MODULE
?¶
Se till att:
Miljövariabeln
DJANGO_SETTINGS_MODULE
är inställd på en fullt kvalificerad Python-modul (t.ex.mysite.settings
).Den nämnda modulen finns på
sys.path
(import mysite.settings
borde fungera).Modulen innehåller inga syntaxfel.
Jag står inte ut med ditt mallspråk. Måste jag använda det?¶
Vi råkar tycka att vår mallmotor är det bästa som finns sedan bacon, men vi inser att det är nära religion att välja ett mallspråk. Det finns inget med Django som kräver att man använder mallspråket, så om du är fäst vid Jinja2, Mako eller vad som helst, känn dig fri att använda dem.
Måste jag använda er modell/databaslager?¶
Nej, det är det inte. Precis som mallsystemet är modell-/databaslagret frikopplat från resten av ramverket.
Det enda undantaget är: Om du använder ett annat databasbibliotek kommer du inte att kunna använda Djangos automatiskt genererade administratörssida. Den appen är kopplad till Djangos databaslager.
Hur använder jag bild- och filfält?¶
Att använda en FileField
eller en ImageField
i en modell tar några steg:
I din inställningsfil måste du definiera
MEDIA_ROOT
som den fullständiga sökvägen till en katalog där du vill att Django ska lagra uppladdade filer. (Av prestandaskäl lagras inte dessa filer i databasen.) DefinieraMEDIA_URL
som den publika URL:en för den katalogen. Se till att den här katalogen är skrivbar av webbserverns användarkonto.Lägg till
FileField
ellerImageField
i din modell och definiera alternativetupload_to
för att ange en underkatalog iMEDIA_ROOT
som ska användas för uppladdade filer.Allt som kommer att lagras i din databas är en sökväg till filen (i förhållande till
MEDIA_ROOT
). Du kommer troligen att vilja använda det praktiska attributeturl
som tillhandahålls av Django. Om dinImageField
till exempel hetermug_shot
kan du få den absoluta sökvägen till din bild i en mall med{{ object.mug_shot.url }}
.
Hur gör jag en variabel tillgänglig för alla mina mallar?¶
Ibland behöver alla dina mallar samma sak. Ett vanligt exempel är dynamiskt genererade menyer. Vid första anblicken verkar det logiskt att lägga till en gemensam ordlista i mallkontexten.
Det bästa sättet att göra detta i Django är att använda en RequestContext
. Detaljer om hur man gör detta finns här: Använda RequestContext.