Tenir compte de la configuration suivante:Hébergement Administrateur Médias Localement Au cours du développement
urls.py
if not settings.PRODUCTION:
urlpatterns += patterns('',
(r'^admin-media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.LOCAL_ADMIN_MEDIA_ROOT, 'show_indexes': True}),
(r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.LOCAL_MEDIA_ROOT, 'show_indexes': True}),
)
settings.py
if not PRODUCTION:
ADMIN_MEDIA_PREFIX = '/admin-media/'
Ainsi lors de l'exécution sur le serveur de développement local les fichiers multimédias devraient être servis via le serveur, non? La route du média est trouvée, mais "Autorisation refusée" est retournée pour chaque requête (mais seulement un média d'administration, le média normal fonctionne bien).
J'ai donc fait quelques vérifications. Il se trouve, si le ADMIN_MEDIA_PREFIX
est réglé sur la même valeur que la route ...
(r'^admin-media/(?P<path>.*)$', 'django.views.static.serve', ...),
ADMIN_MEDIA_PREFIX = '/admin-media/'
... alors le runserver se toujours retour « Autorisation refusée ».
Cependant, si ADMIN_MEDIA_PREFIX
est différent du nom de la route ...
(r'^admin-media/(?P<path>.*)$', 'django.views.static.serve', ...),
ADMIN_MEDIA_PREFIX = '/non-sense-prefix/'
... alors les fichiers seront servis (bien que je dois parcourir manuellement pour pouvoir les voir comme tous les médias les liens sont rompus avec http://localhost:8000/non-sense-prefix/whatever.jpg).
Quelle est la situation ici?
Dans le même temps, je l'ai résolu le problème par un petit hack pour changer de répertoire ...
(r'^admin-media/(?P<path>.*)$', 'django.views.static.serve', ...),
ADMIN_MEDIA_PREFIX = '/admin-media/../admin-media/'
... mais je voudrais vraiment plutôt le configurer correctement. Il semble que django essaie d'être intelligent et de faire quelque chose en mon nom, mais de faire des erreurs dans le processus. Des idées? Je traite manuellement le média d'administration parce que j'utilise grappelli qui fournit un remplacement pour les modèles/médias d'administration.
J'ai juste rencontré ce problème avec Grappelli (et votre solution de contournement laide et ingénieuse fonctionne pour moi!) - avez-vous déjà trouvé une solution plus élégante? –
@Dominic - Non, j'ai toujours ce stupide changement de répertoire. Puisque seuls les développeurs le voient, je l'ai laissé partir. Peut-être cela a-t-il quelque chose à voir avec la façon dont Grappelli gère les chemins. –
@T. Stone - ok, merci. +1 pour votre solution de contournement ingénieuse, qui sait combien de temps cela m'aurait pris pour comprendre. –