2013-03-02 5 views
7

quelqu'un peut me aider avec cette question: j'ai Django porject,montrent des images dans les modèles Django

dans settings.py

MEDIA_ROOT = 'C:/Users/hl/workspace/beer/media' 
MEDIA_URL = '/media/' 
STATICFILES_DIRS = (
    'C:/Users/hl/workspace/beer/media' 
) 

et models.py

image1= models.ImageField(upload_to=settings.MEDIA_ROOT) 

et en url.py

(r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}), 

dans les vues

def allBeer(request): 
     beers=Beer.objects.all().order_by("name") 
     context={'beers': beers} 
     return render_to_response('AllBeers.html',context,context_instance=RequestContext(request)) 

et en html

{%for beer in beers %} 
    <p> 
     <a href="/beers/{{beer.slug}}/"> 
      <img scr="{{beer.image1.url}}">{{beer}} 
     </a> 
    </p> 
{% endfor%} 

Il n'a pas problème pour charger des images, mais les images montrent l'habitude dans le fichier html. J'ai cherché et lu beaucoup d'Internet mais je ne pouvais toujours pas comprendre.

Quelqu'un peut-il me dire pourquoi?

+3

Gras * gras * ** gras! ** –

Répondre

6
image1= models.ImageField(upload_to=images) 


from django.conf.urls import patterns, include, url 
from django.conf.urls.static import static 
from django.contrib import admin 
from django.contrib.staticfiles.urls import staticfiles_urlpatterns 
from project_name import settings 

admin.autodiscover() 
urlpatterns = patterns('', 
    ........... 
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

urlpatterns += staticfiles_urlpatterns() 


<img src="{{MEDIA_URL}}{{beer.image1}}"> 

settings.py

import os 

PROJECT_ROOT = os.path.join(os.path.dirname(__file__), '..') 
SITE_ROOT = PROJECT_ROOT 


MEDIA_ROOT = os.path.join(SITE_ROOT, 'media') 
MEDIA_URL = '/media/' 


STATIC_ROOT = os.path.join(SITE_ROOT, 'static') 
STATIC_URL = '/static/' 


STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static". 
    # Always use forward slashes, even on Windows. 
    os.path.join(SITE_ROOT, 'staticfiles'), 
) 

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
    os.path.join(SITE_ROOT, 'templates'), 
) 
+0

ne peut toujours pas afficher les images avec {{beer}} – hln

+0

j'ai changé pour ces codes, mais rien n'a changé, ne peut toujours pas afficher les images :( – hln

+0

toujours pas de travail, je peux voir des images sont dans le dossier média – hln

2

Vous jouez avec l'attribut src de l'image. Il devrait juste être -

<img src="{{beer.image1.url}}" /> <!-- from the media url --> 

Ne pas ajouter quoi que ce soit à la fin - django savent est l'URL pour servir l'image de - c'est ce que le ImageField sur le modèle fait.

Je ne sais pas qu'il n'y a en fait rien de mal avec votre url conf, mais le modèle recommandé dans le docs est -

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

urlpatterns = patterns('', 
    # ... the rest of your URLconf goes here ... 
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
+0

ne peut toujours pas afficher les images avec {{beer}} :( – hln

+0

Cela devrait fonctionner si vous êtes sur le serveur de dev (ie en utilisant 'python manage.py runserver'). Si vous l'exécutez sur un serveur en direct, vous devrez vérifier votre configuration pour servir correctement les fichiers statiques - ceci n'est pas géré par django, mais par le serveur web que vous avez installé. Pour plus d'informations - https://docs.djangoproject.com/fr/1.5/howto/static-files/ –

+0

J'utilise le serveur intégré Django. – hln

Questions connexes