Če pri kreiranju spletnih strani z Djangom uporabljamo razne statične datoteke, kot so slike, css, javascript datoteke, nam jih Django sam po sebi ne bo prepoznal. Potrebno je nekaj nastavitev. Ker je to postopek pravilne nastavitve kar pogost problem na internetu (poglejte samo število tem na stackoverflow-u, povezane z njim) in mi je vzelo kar nekaj časa, da sem našel odgovor v meni razumljivem načinu. V želji, da bo še komu prav prišlo, je postopek napisan spodaj (velja sicer le za razvoj, ne pa tudi za produkcijo).
- Prepričajte se, da je v
settings.py
vINSTALLED_APPS
nahajadjango.contrib.staticfiles
. - V
settings.py
določiteSTATIC_URL
. To je pot, pod katero se bodo nahajale statične datoteke.
[python]STATIC_URL = "/static/"[/python] - Prepričajte se, da so datoteke v pravih direktorijih. Privzeto bo
staticfiles
iskal datoteke v direktorijihstatic/
, ki se nahaja v mapah nameščenih aplikacij (nameščena aplikacija je tista, ki je napisana podINSTALLED_APPS
), kot tudi v direktorijih, navedenih podSTATICFILES_DIRS
(v primerih, da hranite statične datoteke v drugih direkotrijih – še posebno, če se ne tičejo posamezne aplikacije). - Naredite pogled (view) dostopen tako, da v
urls.py
na koncu dodate naslednji vrstici:
[python]
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
[/python] - Prepričajte, da je v
settings.py
spremenljivkaDEBUG
nastavljena naTRUE
. - Ko v
views.py
kličeterender_to_response
, jo kličite zRequestContext
Primer:
[python]from django.template import RequestContext
# …def some_view(request):
# …
return render_to_response(‘my_template.html’, {
"foo" : "bar", # other context
}, context_instance = RequestContext(request))[/python]
Ko te opravite, lahko statične datoteke kličete s pomočjo značke {{ STATIC_URL }}
. Primer za povezanje CSS datoteke v HTML dokument:
[html]<link rel="stylesheet" href="{{ STATIC_URL }}style.css">[/html]
Vir: stackoverflow