Les Images de ImageField dans Django ne se charge pas dans le modèle
Je suis en train de construire une galerie à l'aide de Django(1.5.1) sur ma machine locale. Dans mon Album modèle que j'ai un ImageField
. Il y a une vue pour afficher toutes les images d'un album. Il fonctionne bien, mais à la fin les images ne s'affichent pas. Il y a la frontière des images comme vous pouvez le voir, mais les images ne se charge pas.
capture d'écran
models.py
class Category(models.Model):
###
class Album(models.Model):
category = models.ForeignKey(Category, related_name='albums')
###
class Image(models.Model):
album = models.ForeignKey(Album)
image = models.ImageField(upload_to = 'images/albums/')
views.py
def detail(request, album_id):
album = get_object_or_404(Album, pk=album_id)
return render(request, 'gallery/detail.html', {'album': album})
detail.html
<h1>{{ album.title }}</h1>
{% for image in album.image_set.all %}
<a> <img src="{{ image.image.url }}" height="420"></a>
{% endfor %}
Si c'est mon album de l'adresse: http://localhost:8000/gallery/1/
Ensuite l'URL de l'image est:http://localhost:8000/media/images/albums/photo_4.JPG (I get 404 when enter it in browser)
Cette racine du support et de l'url:
MEDIA_ROOT = '/media/'
MEDIA_URL = '/localhost:8000/media/'
Ma racine du support a autorisation 777.
Que dois-je faire maintenant? Où est le problème?
src
attribut?Édité ma question avec plus d'informations sur les url et les paramètres racine.
C'est bizarre, il aurait été
/media/images/albums/photo_4.jpg
. Essayez manuellement, dans le navigateur, tapez cette adresse http://localhost:8000/media/images/albums/photo_4.jpg
et voir si elle montre l'image. Qui doivent être à la bonne adresse. Également dans le code, écrire le img
balise comme ceci <img src="/{{ image.image.url }}" height="420">
avec une barre oblique avant de l'url. OK, voir si quelque chose de tout cela fonctionne.localhost:8000/media/images/albums/photo_4.jpg l'url de ne pas afficher l'image. J'obtiens l'erreur 404. Mais "/" dans la balise img est une bonne idée. L'URL est semble correcte. Mais encore des images n'ont pas de charge.
Avez-vous essayé ce que ma réponse dit?
MEDIA_ROOT='/media/'
OriginalL'auteur sheshkovsky | 2013-04-24
Vous devez vous connecter pour publier un commentaire.
J'ai une idée sur ce qu'est le problème.
MEDIA_URL
devrait ressembler à ceci:Note le caractère de barre oblique au début. C'est parce que les médias est un dossier dans la racine de votre serveur de dossier et non pas par rapport à toute autre url que vous l'appelez.
Et ajouter ces lignes à la fin de votre
urls.py
fichier:Vous pouvez consulter les documents suivants: https://docs.djangoproject.com/en/dev/howto/static-files
Espère que cette aide
Ajoutez cette ligne dans votre
urls.py
:from django.contrib.staticfiles.urls import staticfiles_urlpatterns
Je me fais 'nom 'statique' n'est pas défini"
Ajouter cette:
from django.contrib.staticfiles.urls import static
OriginalL'auteur
Si vous utilisez le serveur de dev, alors vous devez ajouter quelque chose à votre urls.py pour faire de django servir les fichiers multimédia, cf:
1.4.x : https://docs.djangoproject.com/en/1.4/howto/static-files/#serving-other-directories
1.5.x: https://docs.djangoproject.com/en/dev/howto/static-files/#serving-files-uploaded-by-a-user
Faites-vous une faveur et aller lire thèses de liens.
OriginalL'auteur
Source: https://docs.djangoproject.com/en/dev/howto/static-files/#serving-files-uploaded-by-a-user
vous devez ajouter au modèle d'url pour servir les fichiers téléchargés
OriginalL'auteur
Vérifier dans votre settings.py vous avez défini
MEDIA_ROOT
et "MEDIA_URL' (et ils sont corrects). Le MEDIA_ROOT spécifie un répertoire absolu sur votre machine, où les médias seront stockées.Donc, pour un exemple:
Cela signifierait qu'il serait à la recherche de l'image:
Suivant dans votre settings.py vérifier votre
MEDIA_ROOT
emplacement: c'est à direVos images:
Ce serait liée à l':
Espère que cette aide.
MEDIA_URL doit être une URL qui mène à ce même chemin d'accès au répertoire. {{ MEDIA_URL }} n'est pas nécessaire lors de l'utilisation de l'attribut de l'url, car il ajoute automatiquement MEDIA_URL mais vous avez besoin de définir un {{ MEDIA_URL }} ou votre image ne montre pas de!
OriginalL'auteur
Au sein de votre details.html, changer votre
À
J'espère que cette aide. Si non je serai heureux de vous fournir plus de détails.
{% load static %}
ou à l'aide de{{ STATIC_URL }}
?OriginalL'auteur
J'ai pris un peu de chacune des réponses ci-dessus. J'ai eu le même problème que vous. J'ai été d'obtenir des rendements qui étaient dirigés par le courant /blog/post/(media_url)/image.jpg
Dans mon admin portail, je pouvais voir facilement et de le modifier. Mais sur mon post.html j'ai eu des problèmes jusqu'à ce que j'ai ajouté le {{ MEDIA_URL }} --
C'est tout ce qui me manquait.
J'ai posté mon article ci-dessous afin que d'autres personnes puissent le lire et de voir ce qu'ils manquent.
OriginalL'auteur
Eh bien, je sais que cette question est vieux, mais je l'ai résolu dès maintenant, après le prouver toutes les options:
NOTES:
Yo n'avez pas besoin MEDIA_URL, être prudent avec le '/' en raison de l'image.image.l'url est absolu, donc si vous utilisez un espace de noms, alors vous n'avez pas besoin d'ajouter la finition de la barre oblique.
OriginalL'auteur