# Les fichiers statiques et multimédias de Django ne fonctionnent pas lorsque le DEBUG= False
Dans cet article, vous apprendrez comment résoudre le problème de non chargement des fichiers statiques et des médias dans Django même si le DEBUG=False.
C’est la solution la plus simple et la plus sûre.
#settings.py DEBUG = False #True ALLOWED_HOSTS = ['*'] #Host name
# Résolution du problème :
Voyons comment vous pouvez résoudre le problème des fichiers statiques et multimédias de Django qui ne fonctionnent pas lorsque DEBUB = False :
1.)Première façon : devserver en mode non sécurisé
Si vous avez encore besoin de serveur statique localement ( par exemple pour tester sans débogage ), vous pouvez exécuter devserver en mode non sécurisé :
python manage.py runserver --insecure
— insecure : cela signifie que vous pouvez exécuter le serveur sans mode de sécurité.
Remarque : C’est exactement ce que vous devez taper sur le terminal pour exécuter votre projet sans”DEBUG = VRAI”puis vous voyez que tous les fichiers d’actifs (statiques) se chargent correctement sur le serveur local.
2.)Deuxième manière : devserver en mode sécurisé
Étape 1 : Définissez un chemin STATIC_ROOT et MEDIA_ROOT dans settings.py
STATIC_URL = '/static/' MEDIA_URL = '/images/' STATIC_ROOT = os.path.join(BASE_DIR, 'static/') MEDIA_ROOT = os.path.join(BASE_DIR, 'images')
Étape 2 : Définissez maintenant votre URLConf que si static est au début de l’url, accédez aux fichiers du dossier static staticfiles.
#urls.py
from django.contrib import admin
from django.urls import path,include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path(‘admin/’, admin.site.urls),
path(‘’,include(‘List.urls’)),
]
#Ajouter cette ligne
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
urlpatterns += static (settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Remarque : Il s’agit du fichier urls.py de votre projet.
Étape 3 : Vous pouvez maintenant exécuter la collect des fichiers static et lancer votre projet Django.
python manage.py collectstatic python manage.py runserver
Étape 4: Si cella ne fonctionne toujours pas installer whitenoise
WhiteNoise permet à votre application Web de servir ses propres fichiers statiques, ce qui en fait une unité autonome qui peut être déployée n’importe où sans compter sur nginx, Amazon S3 ou tout autre service externe. (Particulièrement utile sur Heroku, OpenShift et d’autres fournisseurs PaaS.)
Il est conçu pour fonctionner parfaitement avec un CDN pour les sites à fort trafic afin que vous n’ayez pas à sacrifier les performances pour bénéficier de la simplicité.
WhiteNoise fonctionne avec n’importe quelle application compatible WSGI mais possède des fonctionnalités spéciales de configuration automatique pour Django.
pip install whitenoise
Editez votre settings.py et ajoutez WhiteNoise à la MIDDLEWARE liste, avant tout autre middleware en dehors du SecurityMiddleware de Django :
MIDDLEWARE = [
# ...
"django.middleware.security.SecurityMiddleware",
"whitenoise.middleware.WhiteNoiseMiddleware",#ajouter cette ligne
# ...
]
Ça y est, vous êtes prêt à partir.
Vous voulez des fichiers toujours en cache et une prise en charge de la compression ? Ajoutez simplement ceci à votre settings.py:
STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"
Note : Félicitations, maintenant les fichiers statiques et multimédias seront chargés dans votre projet Django lorsque DEBUG= False. Amusez-vous!
Commentaires (0)
Aucun commentaire pour le moment. Soyez le premier à réagir !
Laissez un commentaire