Lernverlauf für die Teilnahme an der Team-App-Entwicklung mit Python ~ Django Tutorial 6 ~

Einführung

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.

Statische Dateien mit Django verwalten

Was sind statische und dynamische Dateien überhaupt?

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

Hauptthema

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

Referenz: Was ist ein Webserver Referenz: Funktioniert gut mit statischen Dateien in Django Django-Dokumente

Recommended Posts

Lernverlauf für die Teilnahme an der Team-App-Entwicklung mit Python ~ Django Tutorial 5 ~
Lernverlauf für die Teilnahme an der Entwicklung von Team-Apps mit Python ~ Django Tutorial 4 ~
Lernverlauf für die Teilnahme an der Team-App-Entwicklung mit Python ~ Django Tutorial 1, 2, 3 ~
Lernverlauf für die Teilnahme an der Team-App-Entwicklung mit Python ~ Django Tutorial 6 ~
Lernverlauf für die Teilnahme an der Team-App-Entwicklung mit Python ~ Django Tutorial 7 ~
Lernverlauf für die Teilnahme an der Entwicklung von Team-Apps in Python ~ Denken Sie ein wenig über die Definition von Anforderungen nach ~
Lernverlauf für die Teilnahme an der Entwicklung von Teamanwendungen mit Python ~ Ergänzung der Grundelemente und Aufbau der jupyterLab-Umgebung ~
Lernverlauf zur Teilnahme an der Entwicklung von Teamanwendungen mit Python ~ Build Docker / Django / Nginx / MariaDB-Umgebung ~
Lernverlauf zur Teilnahme an der Entwicklung von Teamanwendungen mit Python ~ Nach Abschluss von "Einführung in Python 3" des Paiza-Lernens ~
Python Django Tutorial (5)
Python Django Tutorial (2)
Python Django Tutorial (8)
Python Django Tutorial (6)
Python Django Tutorial (7)
Python Django Tutorial (1)
Python Django Tutorial Tutorial
Python Django Tutorial (3)
Python Django Tutorial (4)
Boost.NumPy Tutorial zum Erweitern von Python in C ++ (Übung)
[Implementierung zum Lernen] Implementieren Sie Stratified Sampling in Python (1)
Lernnotizen für die Migrationsfunktion im Django-Framework (2)
Erstellen Sie mit Python eine interaktive Umgebung für maschinelles Lernen
Verzeichnisstruktur für die testgetriebene Entwicklung mit pytest in python
App-Entwicklung zum Twittern in Python aus Visual Studio 2017
Lernnotizen für die Migrationsfunktion im Django-Framework (1)
Tiefes Lernen mit Python Kapitel 2 (Material für runde Vorlesung)
Framework-Entwicklung mit Python
Entwicklungsumgebung in Python
Entwicklung des AWS SDK für Python (Boto3) in Visual Studio 2017
Slackbot-Entwicklung in Python
Tutorial für die testgetriebene Entwicklung (TDD) mit Flask-2-Dekorateuren
Erstellen einer Entwicklungsumgebung für Android-Apps - Erstellen von Android-Apps mit Python
Tutorial für die testgetriebene Entwicklung (TDD) mit Flask-1 Test Client Edition
Lernablauf für Python-Anfänger
Python-Lernplan für KI-Lernen
Techniken zum Sortieren in Python
Python-Entwicklung mit Visual Studio 2017
Qt für Python App Selbstaktualisierung
Python Django Tutorial Cheet Sheet
Checkios Empfehlung zum Erlernen von Python
[Zum Organisieren] Python-Entwicklungsumgebung
Python-Entwicklung mit Visual Studio
Über "für _ in range ():" von Python
Wie wäre es mit Anaconda zum Erstellen einer maschinellen Lernumgebung mit Python?
Ändern Sie automatisch die Größe von Screenshots für den App Store für jeden Bildschirm in Python
Gehirnwellenanalyse mit Python: Python MNE-Tutorial
Implementieren Sie das Stacking-Lernen in Python [Kaggle]
Überprüfen Sie Python auf Speicherlecks
8 häufig verwendete Befehle in Python Django
Web-Lehrmaterialien zum Erlernen von Python
[Für Anfänger] Django -Entwicklungsumgebung Bau-
In Python implementierte Widrow-Hoff-Lernregeln
Optionen für die Python-Entwicklungsumgebung für Mai 2020
Emacs-Einstellungen für die Python-Entwicklungsumgebung
Python: Vorverarbeitung beim maschinellen Lernen: Übersicht
Implementierte Perceptron-Lernregeln in Python
Führen Sie unittest in Python aus (für Anfänger)
Bereiten Sie eine Python-Entwicklungsumgebung für jedes Projekt in einer Windows-Umgebung vor (VSCode + virtualEnvWrapper + Pylint).
Entwicklung der MTG Card Evaluation Posting Site ~ Veröffentlichung der Django App in 5 Wochen ~