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.
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
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: Qu'est-ce qu'un serveur Web Référence: fonctionne bien avec les fichiers statiques dans Django Documents Django
Recommended Posts