Heim > Backend-Entwicklung > Python-Tutorial > Detaillierte Erläuterung des Aufrufs statischer Dateien beim Django-Lernen

Detaillierte Erläuterung des Aufrufs statischer Dateien beim Django-Lernen

不言
Freigeben: 2018-05-08 13:44:03
Original
1802 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die detaillierte Erklärung zum Aufrufen statischer Dateien für das Django-Lernen vor. Jetzt kann ich ihn mit allen teilen, die ihn benötigen

Vorwort

Statische Dateien beziehen sich auf JS, CSS, Bilder, Videos und andere Dateien auf der Website. Dieser Artikel führt Sie hauptsächlich in den relevanten Inhalt zum Aufruf statischer Dateien beim Django-Lernen ein Teilen Sie es mit Ihnen. Referenzstudie, unten gibt es nicht viel zu sagen, werfen wir einen Blick auf die detaillierte Einführung

Die Methode ist wie folgt

1.settings .py statische Datei bezogener Beispielcode und Anweisungen:

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.8/howto/static-files/
 
STATIC_URL = '/static/'
 
# 当运行 python manage.py collectstatic 的时候
# STATIC_ROOT 文件夹 是用来将所有STATICFILES_DIRS中所有文件夹中的文件,以及各app中static中的文件都复制过来
# 把这些文件放到一起是为了用apache等部署的时候更方便
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
 
# 其它 存放静态文件的文件夹,可以用来存放项目中公用的静态文件,里面不能包含 STATIC_ROOT
# 如果不想用 STATICFILES_DIRS 可以不用,都放在 app 里的 static 中也可以
STATICFILES_DIRS = (
 os.path.join(BASE_DIR, "common_static"),
 '/path/to/others/static/', # 用不到的时候可以不写这一行
)
 
# 这个是默认设置,Django 默认会在 STATICFILES_DIRS中的文件夹 和 各app下的static文件夹中找文件
# 注意有先后顺序,找到了就不再继续找了
STATICFILES_FINDERS = (
 "django.contrib.staticfiles.finders.FileSystemFinder",
 "django.contrib.staticfiles.finders.AppDirectoriesFinder"
)
Nach dem Login kopieren

2.STATIC_ROOT

STATIC_ROOT = os.path.join(BASE_DIR, 'collect_static')#BASE_DIR是项目的绝对地址
Nach dem Login kopieren

STATIC_ROOT ist das Verzeichnis, in dem alle statischen Dateien beim Bereitstellen statischer Dateien zusammengefasst werden (pyhton manage.py Collectstatic sollte als geschrieben werden). Eine absolute Adresse. Hier zum Beispiel meine Das Projekt mysite ist /home/mysite/, dann ist STATIC_ROOT /home/mysite/collect_static/

Geben Sie beim Bereitstellen des Projekts Folgendes in das Terminal ein:

python manage.py collectstatic
Nach dem Login kopieren

Django kopiert alle statischen Dateien in den Ordner STATIC_ROOT

3. STATICFILES_DIRS

STATIC_ROOT kommt nur ins Spiel Während der Bereitstellung, aber 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 die statischen Dateien darin abzulegen. Wenn Sie beispielsweise in der Vorlage statische Dateien verwenden,

django sucht in jeder App automatisch nach dem statischen Ordner (schreiben Sie den Ordnernamen also nicht falsch, sonst kann Django Ihren Ordner nicht finden

2. Eine weitere Möglichkeit besteht darin, einen öffentlichen Ordner außerhalb aller App-Dateien zu erstellen. Da einige statische Dateien nicht nur für eine bestimmte App gelten, können Sie sie zur Vereinfachung in einem öffentlichen Ordner ablegen Verwaltung (Beachten Sie, dass die Einrichtung eines öffentlichen statischen Dateiordners nur eine Möglichkeit ist, die Verwaltung zu erleichtern, aber nicht notwendig ist.

App kann statische Dateien appübergreifend anwenden, da schließlich alle statischen Dateien in STATIC_ROOT vorhanden sind.) Die Frage Jetzt erfahren Sie, wie Sie

Django mitteilen, dass Sie einige statische Dateien in einem öffentlichen Ordner außerhalb der App abgelegt haben. Anschließend müssen Sie STATICFILES_DIRS

STATICFILES_DIRS = (
 os.path.join(BASE_DIR, 'common_static'),
)
Nach dem Login kopieren

konfigurieren

STATICFILES_DIRS weist Django an, zuerst in STATICFILES_DIRS nach statischen Dateien zu suchen und sie dann im statischen Ordner jeder App zu suchen (beachten Sie, dass Django nach statischen Dateien sucht. Es handelt sich um eine verzögerte Suche. Wenn die erste gefunden wird , die Suche stoppt)

3.STATIC_URL


Bisher kann der statische Dateimechanismus funktionieren, aber es gibt eine Frage: Kann ich über direkt auf die statischen Dateien in meinem Projekt zugreifen? URL? Die Antwort lautet definitiv „Ja“, aber bitte beachten Sie, dass Sie im Browser darauf zugreifen und nicht die lokale absolute Adresse Ihrer statischen Dateien eingeben können. Die lokale Adresse eines meiner Bilder lautet beispielsweise /home/mysite/common_static /myapp/photo.png

Dann ist es für andere unmöglich, direkt im Browser einzutreten:

http://192.168/home/mysite/common_static/myapp/photo .png

Auf diese Weise meldet der Browser einen Fehler, es gibt keine solche Seite

Wie ermöglicht Django das Durchsuchen? Der Browser kann auch auf statische Dateien zugreifen Wie bereits erwähnt, ist ein direkter Zugriff auf die lokale Adresse des Servers nicht möglich, daher ist eine Zuordnung von STATIC_URL erforderlich, um dem Browser den direkten Zugriff auf statische Dateien zu ermöglichen, z. B.:


STATIC_URL = '/static/'
Nach dem Login kopieren

Dann können Sie im Browser Folgendes eingeben:

http://192.168.1.2:8000/static/common_static/myapp/photo.png

Dann entspricht es dem Zugriff auf /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 entspricht STATIC_ROOT

der lokalen Adresse:


Eine kurze Analyse von STATIC_ROOT, STATIC_URL und STATICFILES_DIRS in Django

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Aufrufs statischer Dateien beim Django-Lernen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage