Django zaleca, że jeśli mam używać tylko jednego serwera (Apache) do obsługi zarówno plików dynamicznych, jak i statycznych, wówczas I should serve static files using django.contrib.staticfiles
.Jak obsługiwać statyczne pliki admina django.contrib.staticfiles w Django 1.4 (używając jednego serwera Apache)?
Więc w moim settings.py
mam załadowany django.contrib.staticfiles
do mojego INSTALLED_APPS
i django.core.context_processors.static
do mojego TEMPLATE_CONTEXT_PROCESSORS
.
zauważyłem w szablonach administracyjnych, że linki do plików statycznych tak (z index.html
):
{% load i18n admin_static %}
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/dashboard.css" %}" />{% endblock %}
Ale patrząc na szablon admin_static
, to po prostu otoki dla static
:
from django.conf import settings
from django.template import Library
register = Library()
if 'django.contrib.staticfiles' in settings.INSTALLED_APPS:
from django.contrib.staticfiles.templatetags.staticfiles import static
else:
from django.templatetags.static import static
static = register.simple_tag(static)
Tak więc doszedłem do wniosku, że ponieważ każdy plik statyczny administratora ma serwer z prefiksem admin/...
, pełna ścieżka (dla mojego przypadku) powinna być
/usr/lib64/python2.7/site-packages/django/contrib/admin/static
Ustawiłem więc ścieżkę do mojego STATICFILES_DIRS
wewnątrz settings.py
, ale Apache nadal nie będzie obsługiwał żadnych plików statycznych (po restytucji serwera). Gdzie popełniłem błąd w mojej logice?
Zwięzłe, głębokie i kompleksowe, dzięki) –