Mai 2022 Mise à jour :
Tout d'abord, je donne des explications sur "STATIC_ROOT" puis "STATIC_URL" .
<STATIC_ROOT>
"STATIC_ROOT" ensembles le chemin absolu vers le dossier où sont stockés les fichiers statiques utilisés pour les applications et l'administration dans un projet django et la commande ci-dessous crée le dossier et rassemble les fichiers statiques des applications et de l'administration dans un projet django dans le dossier (* La définition de "STATIC_ROOT" n'influence jamais l'URL d'un fichier statique. ):
python manage.py collectstatic
Et "STATIC_ROOT" ne fonctionne qu'en Mode de production qui est "DEBUG = False" comme indiqué ci-dessous :
# "core/settings.py"
DEBUG = False // Production Mode
Maintenant, nous avons un projet django avec les fichiers statiques "core.js" dans le dossier "core" où "settings.py" est et "myapp.css" dans le dossier "myapp". qui est "une application" comme indiqué ci-dessous :
![enter image description here]()
Et les dossiers "css", "fonts", "img" et "js" dans le dossier "admin" dans le dossier "venv". comme indiqué ci-dessous. *J'utilise Environnement virtuel nommé "venv" pour ce projet django donc les fichiers statiques pour "admin" est en elle et le chemin relatif vers le dossier "admin es "venv/lib/python3.8/site-packages/django/contrib/admin/static/admin" :
![enter image description here]()
Ensuite, nous fixons "os.path.join(BASE_DIR, 'static')" qui est " C:\Users\kai\django -Projet \static "dans Windows dans mon cas a "STATIC_ROOT" . En outre, nous fixons "Faux" a "DEBUG parce que "STATIC_ROOT" ne fonctionne qu'en Mode de production comme je l'ai déjà dit :
# "core/settings.py"
DEBUG = False // Production Mode
STATIC_ROOT = os.path.join(BASE_DIR, 'static') // Here
STATIC_URL = '/static/'
Maintenant, nous exécutons la commande ci-dessous :
python manage.py collectstatic
Ensuite, "dossier "statique est créé et "dossiers "css", "fonts", "img" et "js" dans le dossier "admin y "myapp.css" dans le dossier "myapp". sont rassemblés dans "dossier "statique comme indiqué ci-dessous, mais comme nous pouvons le voir, "core.js" dans le dossier "core n'est pas collectée dans les "dossier "statique comme indiqué ci-dessous, car comme je l'ai déjà dit, la commande "python manage.py collectstatic". collecte les fichiers statiques des applications et de l'administration dans un projet django mais le dossier "core" qui contient "settings.py" n'est pas une application ni un administrateur. C'est pourquoi "core.js" dans le dossier "core n'est pas collectée dans les "dossier "statique :
![enter image description here]()
Mais il existe un moyen de collecter "core.js" dans le dossier "core en "dossier "statique . Pour ce faire, nous devons utiliser "STATICFILES_DIRS" puis définir os.path.join(BASE_DIR, 'core/static')" qui est " C:\Users\kai\django -Projet \core\static "dans Windows dans mon cas a "STATICFILES_DIRS" comme indiqué ci-dessous :
# "core/settings.py"
DEBUG = False
STATICFILES_DIRS = [ // Here
os.path.join(BASE_DIR, 'core/static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
Maintenant, nous exécutons à nouveau la commande ci-dessous :
python manage.py collectstatic
Ensuite, saisissez "oui" puis appuyez sur "Entrer" pour écraser dossier "statique" existant :
Vous avez demandé à collecter des fichiers statiques à l'emplacement de destination tel que spécifié dans vos paramètres :
C:\Users\kai\django -Projet \static
Cela écrasera les fichiers existants ! Êtes-vous sûr de vouloir faire cela ?
Tapez "oui" pour continuer ou "non" pour annuler : oui
Aujourd'hui, "core.js" dans le dossier "core est collectée en "dossier "statique comme indiqué ci-dessous :
![enter image description here]()
<STATIC_URL>
Ensuite, j'explique ce qu'est un "STATIC_URL" .
"STATIC_URL" ensembles la partie du répertoire avant de l'URL du fichier statique entre la partie hôte et la partie fichier de l'URL du fichier statique comme indiqué ci-dessous (* Le réglage de "STATIC_URL" n'influence jamais le chemin absolu du dossier où sont stockés les fichiers statiques utilisés pour les applications et l'administration dans un projet django. ):
| Host | Directory | File |
| |Front | Back | |
<-------------> <----> <-------> <------>
https://www.example.com/static/admin/css/base.css
Par exemple, nous définissons '/static/' a "STATIC_URL" comme indiqué ci-dessous (* "STATIC_URL" fonctionne dans les deux Mode de développement qui est "DEBUG = True" y Mode de production qui est "DEBUG = False" ):
# "core/settings.py"
DEBUG = False
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'core/static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/' # Here
Ensuite, ouvrez Administrateur Django :
![enter image description here]()
Appuyez ensuite sur "F12" pour ouvrir "Outils du développeur" pour vérifier les ressources utilisées pour la page d'administration de Django actuellement ouverte dans "Sources". et il y a les fichiers statiques de "admin" que nous venons de rassembler dans le dossier "static". :
![enter image description here]()
Ensuite, survolez "base.css" en "css" pour vérifier l'URL :
![enter image description here]()
Comme nous le voyons, nous pourrions définir la partie "statique" du répertoire avant :
Here
<------>
http://localhost:8000/static/admin/css/base.css
L'URL ci-dessous correspond au cas suivant "www.example.com" con "https" :
Here
<------>
https://www.example.com/static/admin/css/base.css
Et nous pouvons changer la partie "statique" du répertoire avant a "hello/world" .
Il suffit donc de modifier "STATIC_URL" de '/static/' a '/hello/world/' comme indiqué ci-dessous :
# "core/settings.py"
DEBUG = False
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'core/static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/hello/world/' # Here
Ensuite, rafraîchissez la page d'administration de Django :
![enter image description here]()
Ensuite, la partie "statique" du répertoire avant est remplacé par "hello/world" comme indiqué ci-dessous :
Here
<----------->
http://localhost:8000/hello/world/admin/css/base.css