Heim > Artikel > Backend-Entwicklung > Eine kurze Analyse von STATIC_ROOT, STATIC_URL und STATICFILES_DIRS in Django
Dieser Artikel führt Sie hauptsächlich in die relevanten Informationen zu STATIC_ROOT, STATIC_URL und STATICFILES_DIRS durch Beispielcode ein. Es hat einen gewissen Referenz-Lernwert für alle, die es brauchen Werfen Sie gemeinsam einen Blick darauf
Vorwort
Dieser Artikel führt Sie hauptsächlich in die relevanten Inhalte zu STATIC_ROOT, STATIC_URL und STATICFILES_DIRS in Django ein Ihr Nutzen. Bitte schauen Sie sich die ausführliche Einführung an.
Die Details sind wie folgt:
Zuerst konfigurieren wir die statische Datei und fügen die folgenden Codezeilen zu Setting.py hinzu:
settings.py
# the settings above # STATIC SETTINGS STATIC_URL = '/static/' # BASE_DIR 是项目的绝对地址 STATIC_ROOT = os.path.join(BASE_DIR, 'collect_static') #以下不是必须的 STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'common_static'), )
1.STATIC_ROOT
STATIC_ROOT ist bei der statischen Bereitstellung Dateien (pyhtonmanage.pycollectstatic) Für alle statischen statischen Aggregationsverzeichnisse muss STATIC_ROOT als absolute Adresse geschrieben werden. Hier ist zum Beispiel mein Projekt mysite /home/mysite/
, dann ist STATIC_ROOT /home /mysite/collect_static /
Geben Sie beim Bereitstellen des Projekts im Terminal Folgendes ein:
python manage.py collectstatic
django kopiert alle statischen Dateien nach Der STATIC_ROOT-Dateiclip
2.STATICFILES_DIRS
STATIC_ROOT kommt nur während der Bereitstellung ins Spiel. In tatsächlichen Situationen gibt es zwei allgemeine Platzierungsorte für statische Dateien:
1. Eine besteht darin, in jeder App einen neuen statischen Ordner zu erstellen und statische Dateien darin abzulegen. Wenn Sie beispielsweise statische Dateien in Vorlagen verwenden möchten, fügt Django diese automatisch jeder App hinzu. Durchsuchen Sie den statischen Ordner darin (schreiben Sie den Ordnernamen also nicht falsch, sonst kann Django Ihren Ordner nicht finden)
2. Die andere Möglichkeit besteht darin, außerhalb aller App-Dateien zu suchen Da einige statische Dateien nicht nur für eine bestimmte App gelten, können Sie sie zur einfacheren Verwaltung in einem öffentlichen Ordner ablegen (beachten Sie, dass das Erstellen eines öffentlichen statischen Dateiordners nur eine Möglichkeit zur Vereinfachung der Verwaltungsmethode darstellt, aber nicht erforderlich ist). Apps kann statische Dateien appübergreifend anwenden, da am Ende alle statischen Dateien in STATIC_ROOT vorhanden sind)
Dann stellt sich nun die Frage, wie man Django darüber informiert, dass man einige statische Dateien in einem öffentlichen Ordner außerhalb von ablegt In der App müssen Sie STATICFILES_DIRS konfigurieren.
STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'common_static'), )
STATICFILES_DIRS weist Django an, zuerst nach statischen Dateien in der Datei STATICFILES_DIRS zu suchen und dann im statischen Ordner jeder App zu suchen (Beachten Sie, dass Django langsam nach statischen Dateien sucht und die Suche beendet, wenn es die erste findet)
3.STATIC_URL
Bisher die statische Datei Der Mechanismus kann funktionieren, aber es gibt eine Frage: Kann ich über die URL direkt auf die statischen Dateien in meinem Projekt zugreifen? Die Antwort lautet definitiv „Ja“, aber bitte beachten Sie: Sie greifen in einem Browser darauf zu Statische Datei. Beispielsweise lautet die lokale Adresse eines meiner Bilder
/home/mysite/common_static/myapp/photo.png
Dann ist es für andere unmöglich, sie einzugeben direkt im Browser:
http://192.168.1.2:8000/home/mysite/common_static/myapp/photo.png
In diesem Fall der Browser wird einen Fehler melden, es gibt keine solche Seite
Wie ermöglicht Django dem Browser also den Zugriff auf statische Dateien auf dem Server? Wie bereits erwähnt, ist der direkte Zugriff auf die lokale Adresse des Servers nicht möglich. Dann ist eine Zuordnung erforderlich, um dem Browser den direkten Zugriff auf statische Dateien zu ermöglichen, z. B.:
STATIC_URL = '/static/'
Dann können Sie im Browser Folgendes eingeben:
http://192.168.1.2:8000/static/common_static/myapp/photo.png
Dann entspricht es Visit /home/mysite/common_static/myap /photo.png
Verwenden Sie also im Browser den spezifischen Inhalt des Präfixes STATIC_URL, um STATIC_ROOT zuzuordnen,
HTTP://192.168.1.2:8000/static STATIC_ROOT entsprechend der lokalen Adresse
Verwandte Empfehlungen:
So verwenden Sie Ajax in Django
So verhindern Sie, dass die Formularseite in Django beim automatischen Senden aktualisiert wird
Das obige ist der detaillierte Inhalt vonEine kurze Analyse von STATIC_ROOT, STATIC_URL und STATICFILES_DIRS in Django. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!