Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Analyse von STATIC_ROOT, STATIC_URL und STATICFILES_DIRS in Django

Eine kurze Analyse von STATIC_ROOT, STATIC_URL und STATICFILES_DIRS in Django

不言
不言Original
2018-05-08 11:49:071548Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn