J'essaie de télécharger une image via l'administrateur Django, puis de visualiser cette image dans une page sur le frontend ou simplement via une URL.
Notez que tout cela est sur ma machine locale.
Mes paramètres sont les suivants:
MEDIA_ROOT = '/home/dan/mysite/media/'
MEDIA_URL = '/media/'
J'ai défini le paramètre upload_to sur 'images' et le fichier a été correctement téléchargé dans le répertoire:
'/home/dan/mysite/media/images/myimage.png'
Cependant, lorsque j'essaie d'accéder à l'image à l'URL suivante:
http://127.0.0.1:8000/media/images/myimage.png
J'obtiens une erreur 404.
Dois-je configurer des patrons URLconf spécifiques pour les médias téléchargés?
Tout conseil apprécié.
Merci.
^
signe avantmedia//(?P<path>.*)$
, parfois lorsque nous accédons au fichier multimédia dans le chemin de l'URL de l'application (commehttp://127.0.0.1:8000/myapp/media/img/logo.png
), ce habituel ne fera pas de calcul.Veuillez lire attentivement le DOC officiel de Django et vous trouverez la réponse la plus appropriée.
La façon la plus simple et la plus simple de résoudre ce problème est la suivante.
la source
if settings.DEV
vérification car il est désactivé automatiquement?Pour Django 1.9, vous devez ajouter le code suivant selon la documentation:
Pour plus d'informations, vous pouvez vous référer ici: https://docs.djangoproject.com/en/1.9/howto/static-files/#serving-files-uploaded-by-a-user-during-development
la source
Voici ce que j'ai fait dans Django 2.0. Définissez d'abord MEDIA_ROOT sur MEDIA_URL dans
setting.py
Activez ensuite l'entrée
media
context_processors
enTEMPLATE_CONTEXT_PROCESSORS
ajoutantVotre
media context processor
est activé, maintenant chacunRequestContext
contiendra une variableMEDIA_URL
.Vous pouvez maintenant y accéder dans votre
template_name.html
la source
Oui. Pour le développement, c'est aussi simple que d'ajouter ceci à votre URLconf:
Cependant, pour la production, vous voudrez servir les médias en utilisant Apache, lighttpd, nginx ou votre serveur Web préféré.
la source
(au moins) pour Django 1.8:
Si tu utilises
comme décrit ci-dessus, assurez-vous qu'aucun modèle d'URL "catch all", dirigeant vers une vue par défaut, ne précède dans urlpatterns = []. Comme .append mettra le schéma ajouté à la fin de la liste, il ne sera bien sûr testé que si aucun modèle d'URL précédent ne correspond. Vous pouvez éviter cela en utilisant quelque chose comme ceci où le modèle d'URL "catch all" est ajouté à la toute fin, indépendamment de l'instruction if:
la source
Voici les changements que j'ai dû apporter pour livrer des PDF pour les publications django , en utilisant Django 1.10.6:
Utilisé les mêmes définitions pour les répertoires multimédias que vous, dans
settings.py
:Comme fourni par @thisisashwanipandey, dans le principal du projet
urls.py
:et une modification de la réponse fournie par @ r-allela, en
settings.py
:la source
Un autre problème auquel vous serez probablement confronté après avoir configuré tous vos modèles de configuration d'URL est que la variable
{{ MEDIA_URL }}
ne fonctionnera pas dans vos modèles. Pour résoudre ce problème, dans votre settings.py , assurez-vous d'ajouterdans votre
TEMPLATE_CONTEXT_PROCESSORS
.la source
Ajout à la réponse de Micah Carrick pour Django 1.8:
la source
TypeError: view must be a callable or a list/tuple in the case of include().
.C'est ce que j'ai fait pour obtenir un rendu d'image en mode DEBUG = False en Python 3.6 avec Django 1.11
la source
En suivant les étapes mentionnées ci-dessus pour => 3.0 pour le mode débogage
Et aussi la partie qui m'a rattrapé, l'URL statique ci-dessus ne fonctionnait que dans mon fichier urls.py de projet principal.J'essayais d'abord d'ajouter à mon application et je me demandais pourquoi je ne pouvais pas voir les images.
Enfin, assurez-vous de définir les éléments suivants:
la source
Si pour Django 1.10:
la source
Votre réglage est correct. Certains serveurs Web nécessitent de spécifier spécifiquement les fichiers multimédias et les dossiers statiques. Par exemple, dans pythonanywhere.com, vous devez vous rendre dans la section «Web» et ajouter l'url des dossiers multimédias et du dossier statique. Par exemple:
Je sais qu'il est tard, mais juste pour aider ceux qui visitent ce lien à cause du même problème;)
la source