Historique d'apprentissage pour participer au développement d'applications d'équipe avec Python ~ Tutoriel Django 6 ~

introduction

Quand j'ai construit l'environnement avec cet article, j'ai créé static directement sous la racine comme dossier de gestion des fichiers statiques. Et dans settings.py


STATIC_URL = '/static/'
STATIC_ROOT = '/static'

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')

Vous souvenez-vous avoir effectué ces réglages? Et vous souvenez-vous d'avoir enfin lancé le sort python manage.py collectstatic comme ça? Cette fois, je voudrais approfondir un peu plus ce à quoi ressemble le flux ici et le réorganiser.

Gérer les fichiers statiques avec Django

Que sont les fichiers statiques et dynamiques en premier lieu?

Je vais l'organiser à nouveau.

«Je pense que vous avez compris auparavant que les fichiers statiques sont des fichiers qui sont échangés sans être modifiés ou mis à jour entre les échanges, mais plus strictement, du serveur au navigateur au sein du serveur Web statique», Il se réfère à un fichier qui est traité pour pouvoir être envoyé "tel quel". Le processus de renvoi du fichier demandé sur le serveur en tant que réponse HTTP au navigateur est en cours d'exécution.

Référence: Qu'est-ce qu'un serveur Web Référence: fonctionne bien avec les fichiers statiques dans Django

Sujet principal

Maintenant, revenons au début. La gestion des fichiers statiques dans Django dépend du fait que settings.DEBUG est True ou False. Et cela semble être un endroit déroutant. Tout d'abord, si c'est "True", c'est-à-dire en mode développement, spécifiez-le grâce à django.contrib.staticfiles, et si vous exécutez la commande runserver, le fichier statique sera appliqué par défaut.

Puis «False», c'est-à-dire ce qui se passe dans l'environnement de production, si vous ne définissez rien, le fichier statique sera ignoré. La raison en est que dans un environnement de production, contrairement à un environnement local, un serveur Web tel que Nginx gère l'échange de fichiers statiques. Une fois que vous avez compris cela, revenons sur les paramètres suivants dans l'article d'ouverture.

nginx.conf


upstream django {
    ip_hash;
    server python:8888;
}

# configuration of the server(Configuration du serveur)

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(Limite de téléchargement de fichiers multimédias)
    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
    }

}



C'était un fichier qui définissait la manière dont la demande devait être transmise dans Nginx. Réviser

Il est écrit cela. Jetons un coup d'œil à cela également.

settings.py



STATIC_URL = '/static/'
STATIC_ROOT = '/static'

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')

STATIC_URL définit l'URL à atteindre lorsque vous voulez faire référence à un fichier statique dans une application Django. Ceci et la partie location / static {alias / static;} côté Nginx définissent la route pour l'échange de fichiers statiques côté serveur Web et côté Django. STATIC_ROOT = '/ static' définit le répertoire dans le dossier où les fichiers statiques sont collectés. Dans l'article du début et dans ce tutoriel, static est créé comme un dossier à cet effet directement sous la racine, mais en fait, static peut également être placé directement sous chaque dossier d'application. Cependant, cela compliquerait la gestion, alors créez un dossier pour organiser les dossiers statiques et essayez de stocker le dossier de fichiers statiques pour chaque application. Enfin, pour appliquer le fichier statique à admin, c'est-à-dire à la page administrative, exécutez la commande collect static qui agrège le fichier statique dans STATIC_ROOT, et le fichier statique est prêt à être manipulé dans l'environnement de production. .. Le mécanisme des paramètres des fichiers multimédias définis par MEDIA_URL et MEDIA_BOOT est le même que celui des fichiers statiques, je vais donc l'omettre.

référence

Référence: Qu'est-ce qu'un serveur Web Référence: fonctionne bien avec les fichiers statiques dans Django Documents Django

Recommended Posts

Historique d'apprentissage pour participer au développement d'applications d'équipe avec Python ~ Tutoriel Django 5 ~
Historique d'apprentissage pour participer au développement d'applications d'équipe avec Python ~ Tutoriel Django 4 ~
Historique d'apprentissage pour participer au développement d'applications d'équipe avec Python ~ Tutoriel Django 1, 2, 3 ~
Historique d'apprentissage pour participer au développement d'applications d'équipe avec Python ~ Tutoriel Django 6 ~
Historique d'apprentissage pour participer au développement d'applications d'équipe en Python ~ Tutoriel Django 7 ~
Historique d'apprentissage pour participer au développement d'applications d'équipe en Python ~ Pensez un peu à la définition des exigences ~
Historique d'apprentissage pour participer au développement d'applications d'équipe avec Python ~ Supplément d'éléments de base et construction de l'environnement jupyterLab ~
Apprentissage de l'historique pour participer au développement d'applications d'équipe avec Python ~ Créer un environnement Docker / Django / Nginx / MariaDB ~
Apprentissage de l'histoire pour participer au développement d'applications en équipe avec Python ~ Après avoir terminé "Introduction à Python 3" de paiza learning ~
Tutoriel Python Django (5)
Tutoriel Python Django (2)
Tutoriel Python Django (8)
Tutoriel Python Django (6)
Tutoriel Python Django (7)
Tutoriel Python Django (1)
Tutoriel du didacticiel Python Django
Tutoriel Python Django (3)
Tutoriel Python Django (4)
Tutoriel Boost.NumPy pour l'extension de Python en C ++ (pratique)
[Implémentation pour l'apprentissage] Implémentation de l'échantillonnage stratifié en Python (1)
Notes d'apprentissage pour la fonction migrations dans le framework Django (2)
Créez un environnement interactif pour l'apprentissage automatique avec Python
Structure de répertoire pour le développement piloté par les tests à l'aide de pytest en python
Développement d'applications pour tweeter en Python à partir de Visual Studio 2017
Notes d'apprentissage pour la fonction migrations dans le framework Django (1)
Apprendre en profondeur à l'expérience avec Python Chapitre 2 (Matériel pour une conférence ronde)
Développement de framework avec Python
Environnement de développement en Python
Développement du kit SDK AWS pour Python (Boto3) dans Visual Studio 2017
Développement Slackbot en Python
Tutoriel pour faire du développement piloté par les tests (TDD) avec Flask-2 Decorators
Création d'un environnement de développement pour les applications Android - Création d'applications Android avec Python
Tutoriel pour faire du développement piloté par les tests (TDD) avec Flask-1 Test Client Edition
Flux d'apprentissage pour les débutants en Python
Plan d'apprentissage Python pour l'apprentissage de l'IA
Techniques de tri en Python
Développement Python avec Visual Studio 2017
Mise à jour automatique de l'application Qt pour Python
Fiche technique du didacticiel Python Django
La recommandation de Checkio pour apprendre Python
[Pour organiser] Environnement de développement Python
Développement Python avec Visual Studio
À propos de "for _ in range ():" de python
Que diriez-vous d'Anaconda pour créer un environnement d'apprentissage automatique avec Python?
Redimensionner automatiquement les captures d'écran de l'App Store pour chaque écran en Python
Analyse des ondes cérébrales avec Python: tutoriel Python MNE
Mettre en œuvre l'apprentissage de l'empilement en Python [Kaggle]
Rechercher les fuites de mémoire dans Python
8 commandes fréquemment utilisées dans Python Django
Matériel pédagogique Web pour apprendre Python
[Pour les débutants] Django -Construction d'environnement de développement-
Règles d'apprentissage Widrow-Hoff implémentées en Python
Options d'environnement de développement Python pour mai 2020
Paramètres Emacs pour l'environnement de développement Python
Python: prétraitement dans l'apprentissage automatique: présentation
Implémentation des règles d'apprentissage Perceptron en Python
Exécutez unittest en Python (pour les débutants)
Préparer un environnement de développement Python pour chaque projet dans un environnement Windows (VSCode + virtualEnvWrapper + Pylint)
Développement du site de publication d'évaluation des cartes MTG ~ Sortie de l'application Django dans 5 semaines ~