Als ich die Umgebung mit diesem Artikel erstellt habe, habe ich "static" direkt unter dem Stammverzeichnis als Verwaltungsordner für statische Dateien erstellt.
Und in settings.py
STATIC_URL = '/static/'
STATIC_ROOT = '/static'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
Erinnerst du dich daran, diese Einstellungen vorgenommen zu haben? Und erinnerst du dich daran, wie du endlich den Zauber "python manage.py collectstatic" so gewirkt hast? Dieses Mal möchte ich etwas tiefer in die Strömung hier eintauchen und sie neu organisieren.
Ich werde es wieder organisieren.
"Ich denke, Sie haben verstanden, dass statische Dateien Dateien sind, die ausgetauscht werden, ohne zwischen den Austauschen geändert oder aktualisiert zu werden, genauer gesagt, vom Server zum Browser innerhalb des statischen Webservers." Es bezieht sich auf eine Datei, die verarbeitet wird, damit sie "wie sie ist" gesendet werden kann. Der Vorgang des Zurückgebens der angeforderten Datei auf dem Server als HTTP-Antwort an den Browser wird ausgeführt.
Referenz: Was ist ein Webserver Referenz: Funktioniert gut mit statischen Dateien in Django
Kehren wir zum Anfang zurück.
Die Behandlung statischer Dateien in Django hängt davon ab, ob settings.DEBUG`` True
oder False
ist. Und das scheint ein verwirrender Ort zu sein.
Wenn es sich um "True" handelt, dh im Entwicklungsmodus, geben Sie es zunächst dank "django.contrib.staticfiles" an. Wenn Sie den Befehl "runserver" ausführen, wird die statische Datei standardmäßig angewendet.
Dann "Falsch", das heißt, was in der Produktionsumgebung passiert. Wenn Sie nichts festlegen, wird die statische Datei ignoriert. Der Grund dafür ist, dass in einer Produktionsumgebung im Gegensatz zu einer lokalen Umgebung ein Webserver wie Nginx den Austausch statischer Dateien verwaltet. Wenn Sie dies verstanden haben, werfen wir einen Blick auf die folgenden Einstellungen im Eröffnungsartikel.
nginx.conf
upstream django {
ip_hash;
server python:8888;
}
# configuration of the server(Serverkonfiguration)
server {
# the port your site will be served on
listen 8000;
# the domain name it will serve for
server_name 127.0.0.1; # substitute your machine`s IP address or FQDN
charset utf-8;
# max upload size(Upload-Limit für Mediendateien)
client_max_body_size 75M;
location /static {
alias /static;
}
# Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /etc/nginx/uwsgi_params; # the uwsgi_params file you installed
}
}
Dies war eine Datei, die festlegte, wie die Anforderung in Nginx übergeben werden soll. Zur Überprüfung
Es steht geschrieben, dass. Schauen wir uns das auch an.
settings.py
STATIC_URL = '/static/'
STATIC_ROOT = '/static'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
STATIC_URL
legt die URL fest, die getroffen werden soll, wenn Sie auf eine statische Datei in einer Django-Anwendung verweisen möchten.
Dieser und der Teil location / static {alias / static;}
auf der Nginx-Seite legen die Route für den Austausch statischer Dateien auf der Webserverseite und der Django-Seite fest.
STATIC_ROOT = '/ static'
setzt das Verzeichnis auf den Ordner, in dem die statischen Dateien gesammelt werden.
In dem Artikel am Anfang und in diesem Tutorial wird "statisch" als Ordner zu diesem Zweck direkt unter dem Stammverzeichnis erstellt. Tatsächlich kann statisch jedoch auch direkt unter jedem Anwendungsordner abgelegt werden.
Dies würde jedoch die Verwaltung erschweren. Erstellen Sie daher einen Ordner, der statische Ordner organisiert, und versuchen Sie, die statischen Dateiordner für jede Anwendung darin zu speichern.
Um die statische Datei auf den Administrator, dh die Verwaltungsseite, anzuwenden, führen Sie abschließend den Befehl "static erfassen" aus, mit dem die statische Datei in "STATIC_ROOT" zusammengefasst wird, und die statische Datei kann in der Produktionsumgebung verarbeitet werden. ..
Der Mechanismus der Einstellungen für Mediendateien, die durch "MEDIA_URL" und "MEDIA_BOOT" festgelegt wurden, ist der gleiche wie der für statische Dateien, daher werde ich ihn weglassen.
Referenz: Was ist ein Webserver Referenz: Funktioniert gut mit statischen Dateien in Django Django-Dokumente
Recommended Posts