Wie um zu dienen admin statische Dateien mit django.contrib.staticfiles in Django 1.4 (mit einem Apache-server)?
Django empfiehlt mir, wenn ich dabei bin, nur einen server (Apache) dienen sowohl dynamische als auch statische Dateien, dann Ich sollte dazu dienen, statische Dateien, die mit django.contrib.staticfiles
.
Also in meinem settings.py
ich geladen haben django.contrib.staticfiles
zu meinem INSTALLED_APPS
und django.core.context_processors.static
zu meinem TEMPLATE_CONTEXT_PROCESSORS
.
Bemerkte ich in der admin-Vorlagen, die Sie links zu statischen Dateien wie dieses (aus index.html
):
{% load i18n admin_static %}
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/dashboard.css" %}" />{% endblock %}
Aber ein Blick in den template-tag admin_static
, es ist einfach ein wrapper für 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)
So, Schloss ich, dass da jeder admin statische Datei serverd mit einem admin/...
- Präfix, dann wird der vollständige Pfad (für meinen Fall) sollte
/usr/lib64/python2.7/site-packages/django/contrib/admin/static
So habe ich mich auf den Weg zu meiner STATICFILES_DIRS
innen settings.py
, aber Apache ist noch nicht dienen, alle statischen Dateien (nach Anpassung der server). Wo habe ich einen Fehler in meiner Logik?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Danke Daniel Roseman für die Erklärung und dass Sie mir die chance zu lernen, es auf meine eigene (und jetzt werde ich nicht vergessen!) :-).
Anfangs war ich wirklich verwirrt und ich wusste nicht, Sie hatte zum ersten sammeln die statische Dateien, dann sagen Sie Apache, um dienen es. Ich dachte, einfach mit
STATICFILES_DIRS
einschließlich derstatic
app insettings.py
war gut genug.Also hier ist, wie ich es gemacht habe (und bitte lassen Sie mich wissen, wenn ich getan haben könnte es besser):
In
settings.py
Scheint es Django schon wissen, wo Sie zu sammeln die admin-Dateien, die Sie nicht brauchen, um etwas angeben in
STATICFILES_DIRS
es sei denn, Sie brauchen, um zu dienen, Ihre eigenen benutzerdefinierten Dateien (welche weiß ich nicht und somit hatte ich keine Vorherige Erfahrung mit statischen Dateien in Django).Dann bei
/var/www/localhost/htdocs/mysite/
Typpython manage.py collectstatic -l
. Die-l
Mittel, um erstellen Sie einen symbolischen link, um alle gefundenen Dateien nicht kopiert, sondern es spart etwas Platz).Nächstes editieren Sie die Apache-config-Datei (in der Regel
httpd.conf
) und fügen Sie dieSTATIC_URL
Informationen. Meine config-Datei nur für Django sieht wie folgt aus:Dann den Apache neu starten und fertig!
Die Dokumente, die Sie verknüpfen, um nicht zu sagen überhaupt nichts über portion Dateien mit der staticfiles app. Das ist nicht das, was es ist: es ist für das sammeln staticfiles in einer einzigen Ort, damit Sie leicht bedient von Apache. (Es tut viel mit Dateien in Entwicklung, aber das ist nicht das, was wir hier reden.)
Müssen Sie noch festlegen, Apache, um zu dienen Sie die Dateien aus dem entsprechenden Standort über die statische/Präfix.
mod_wsgi
und mitwsgi.py
in Django 1.4. Ich folgte dem Dokumentation s Vorschlag./var/www/localhost/htdocs/
und erstellen Sie einestatic
symbolischen link zu/usr/lib64/python2.7/site-packages/django/contrib/admin/static
oder so?django.contrib.staticfiles
war 1 der 4 verfügbaren Optionen? Die anderen 3 Optionen sind: "Erstellen Sie einen symbolischen link...", "Verwendung eines Alias-Richtlinie..." und "Kopieren Sie die admin-statische Dateien...".