2016-08-31 2 views
0

Je suis nouveau sur Django et j'ai actuellement des problèmes pour afficher les images téléchargées dans Django Admin. J'ai suivi beaucoup de Q et A postés ici dans stackoverflow mais de ceux qui ont fonctionné dans mon problème. J'espère que tous les ninjas de codage actifs ici pourraient m'aider avec ce problème. Voici la vue détaillée du problème:Django Admin: Déterminer le bon chemin de téléchargement de l'image

  1. J'ai défini le MEDIA_ROOT et MEDIA_URL dans settings.py

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
    MEDIA_ROOT = os.path.join(BASE_DIR, "media") 
    MEDIA_URL = "/media/" 
    
  2. Ceci est mon modèle de téléchargement dans models.py:

    from django.utils.html import mark_safe 
    
    class ImageDetails(models.Model): 
        image = models.ImageField(null=True)  
    
        def image_img(self): 
         if self.image: 
          return mark_safe('<img src="%s" height="125px" width="125px"/>' % (self.image.url)) 
         else: 
          return '(No image found)' 
        image_img.short_description = 'Thumbnail' 
    
  3. Dans mon application urls.py:

    urlpatterns = [ 
        url(r'^inputImage', views.inputImage, name='inputImage'), 
        url(r'', views.index), 
    ] 
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
    
  4. Dans mon admin.py:

    class ImageDetailsAdmin(admin.ModelAdmin): 
        fields = ["image"] #for file upload 
        list_display = ("image_img",) 
    
    admin.site.register(ImageDetails, ImageDetailsAdmin) 
    

L'image a été enregistrée avec succès à ProjectDir/médias. Le code HTML renvoie l'URL: http://127.0.0.1:8000/media/imagename.jpg à la balise img. Mais la page ne parvient pas à charger l'image (je serai redirigé vers la page d'index chaque fois que vous utilisez l'URL http://127.0.0.1:8000/media/imagename.jpg). J'utilise Django version 1.10

+0

Vérifiez MEDIA_URL - vous avez affecté deux fois. Je pense que vous vouliez utiliser MEDIA_ROOT dans la première occurrence. – Abhinav

+0

Opps. c'était en fait la racine des médias dans le code original ici. Fait l'édition ici. – jonilyn2730

Répondre

0

Comme suspecté, ce problème concerne les URL de Django. Le problème est survenu parce que je déclarai la URLPATTERN suivante dans une application urls.py:

 url(r'', views.index, name='index'), 

Je résolu le problème en changeant le code:

 url(r'^$', views.index, name='index'), 

et en ajoutant le code suivant au principal urls du projet .py:

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