Je tente de configurer les valeurs appropriées static_url et static_root pour un nouveau projet Django, et je rencontre un problème d'utilisation d'une URL absolue pour static_url.
Mon projet est structuré comme: P> < Pré> xxx pré>
dans mes paramètres.py, j'ai p> si je définis Cependant, si j'utilise une URL absolue comme Ne devriez-vous pas être efficacement identique? Docs état static_url peut être absolu. Pourquoi le paramètre ultérieur ne parvient-il pas à charger des supports statiques? P> p> static_url = '/ statique /' code> , alors je peux accéder à
http: // localhost: 8000 / statique / css / personnalisé.css code> parfaitement. p>
static_url = 'http: // localhost: 8000 / statique /' code>, comme si j'utilisais un CDN, alors
http: // localhost: 8000 / statique / CSS / Custom.CSS CODE> retourne un 404 Erreur. P>
3 Réponses :
Je viens de tester la même chose, en utilisant Dans mes paramètres, je garde une variable de développement, ainsi de suite Localhost L'URL est '/ statique /' et quand je suis déployé (et je définis http: // localhost: 8000 / statique / code> ne fonctionne pas pour moi non plus.
développement = false code>), c'est une URL complète. P>
if DEVELOPMENT == True:
STATIC_URL = '/static/'
else:
STATIC_URL = 'https://www.mywebsite.com/static/'
J'ai fini par faire quelque chose de similaire, mais j'ai changé en fonction du nom d'utilisateur du processus, donc je n'avais pas à craindre de définir une variable.
Je suppose que vous utilisez la fonction Donc de la DOCS: P>
"Cette fonction d'aide ne fonctionne que dans le mode de débogage et uniquement si le préfixe donné est local (par exemple / statique /) et non une URL (par exemple, http://static.example.com/ ). " P> statique code> du
django.conf.urls.static code> pour servir vos fichiers statiques dans l'environnement de développement (ce qui signifie
Debug = true code>). Maintenant que vous pouvez lire dans la documentation, cette fonction ne fonctionne pas avec les URL absolues avec
débogage code> activé. P>
La cause et la solution étaient simples, mais la découverte qu'il était inincutrice basée sur la manière dont j'ai décrit le problème. Je n'ai pas mentionné que mon absolu Je faisais cela dans le cadre d'un hack pour simplifier l'hébergement des médias parmi plusieurs machines de développement de développement externes que j'utilisais pour tester diverses versions de IE. P>
Cependant, lorsqu'il y a une inadéquation entre le domaine dans Si je rencontrais static_url code> avait un domaine différent (
http: // localMedia: 8000 / statique /
http: // localhost: 8000 / statique / code>). p>
static_url code> et
Domaine local de RunServer, Django ne sert que le contenu de static_root et ne tente pas de récupérer les médias des dossiers d'applications . Je ne sais pas pourquoi, mais c'est comme ça. P>
gérer.py colleckstatic code>, il corrige efficacement l'erreur 404 en copiant tous les médias de dossier de l'application dans mon statique_root. Sinon, je pourrais simplement utiliser le même domaine dans mon
static_url code> et Django trouverait automatiquement tout support non collecté dans les dossiers d'applications. P>