Bonjour,

Mes contacts s'affichent mais pas les images (juste l'indicateur de la présence de l'image) lorsque je fais http://localhost:8000/blog/voircontact/ pourtant l'url de l'image est bonne et existe bien dans la base de données, je ne vois pas l'erreur. lorsque j'inspecte le navigateur me dit "impossible de charger l'image" et le serveur de python me dit "GET /media/image.png HTTP/1.1" 404 2073. je suis en phase de développement, d'où l'utilisation du serveur de Django pour afficher les images.

Si vous pouviez m'aider à trouver le problème, ce serait super.

Merci d'avance.

mon fichier urls:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from django.conf.urls import include, url, patterns
from django.contrib import admin

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = patterns('blog.views',
    url(r'^$', 'accueil'), #accueil du blog
    url(r'^date$', 'date_actuelle'),
    url(r'^addition/(?P<nombre1>\d+)/(?P<nombre2>\d+)$', 'addition'),
    url(r'^article/(?P<id>\d+)-(?P<slug>.+)$', 'lire'),
    url(r'^contact/$', 'contact'),
    url(r'^saisie/article$', 'saisie_article'),
    url(r'^contactnew/$', 'nouveau_contact'),
    url(r'^voircontact/$', 'voir_contact'),

)

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Mon models:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
12345678910
 
from django.db import models
 
class Contact(models.Model):
	nom = models.CharField(max_length=50)
	adresse = models.TextField()
	photo = models.ImageField()
 
	def __str__(self):
		return self.nom
ma vue:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
def voir_contact(request):
	contacts = Contact.objects.all()
	return render(request, 'blog/voir_contact.html', {'contacts': contacts})
mon template:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
<h1>Liste des contacts</h1>
{% for contact in contacts %}
    <h2>{{ contact.nom }}</h2>
    Adresse : {{ contact.adresse|linebreaks }}<br/>
    <img src="{{ contact.photo.url }}"/>
{% endfor %}
mon setting:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
 
 
import os
 
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 
 
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/
 
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'pahunuzkcrxyf^(#t5@k#**gi=vpf^j#rpuv#0=77paxyeg)cf'
 
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
 
ALLOWED_HOSTS = []
 
 
# Application definition
 
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
)
 
MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
)
 
ROOT_URLCONF = 'crepes_bretonnes.urls'
 
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
 
WSGI_APPLICATION = 'crepes_bretonnes.wsgi.application'
 
 
# Database
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases
 
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
 
 
# Internationalization
# https://docs.djangoproject.com/en/1.8/topics/i18n/
 
LANGUAGE_CODE = 'fr-FR' #'en-us'
 
TIME_ZONE = 'UTC'
 
USE_I18N = True
 
USE_L10N = True
 
USE_TZ = True
 
 
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.8/howto/static-files/
 
STATIC_URL = '/static/'
 
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)
 
 
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'