2013-02-24 4 views
1

Light Lights 자습서를 사용하여 사진 앱을 만들고 있습니다.Django 사진 앱이 표시되지 않습니다.

문제는 업로드 한 사진입니다. 페이지에 표시되지 않습니다. 내가 전에 장고에 사진을 표시 적이없는 나는 문제가 구성

enter image description here

enter image description here

내 models.py

from django.db import models 
    from django.contrib.auth.models import User 
    from django.contrib import admin 
    from string import join 
    import os 
    from PIL import Image as PImage 
    from mysite.settings import MEDIA_ROOT 

    class Album(models.Model): 
     title = models.CharField(max_length=60) 
     public = models.BooleanField(default=False) 
     def __unicode__(self): 
      return self.title 
     def images(self): 
      lst = [x.image.name for x in self.image_set.all()] 
      lst = ["<a href='/media/%s'>%s</a>" % (x, x.split('/')[-1]) for x in lst] 
    return join(lst, ', ') 
     images.allow_tags = True 
    class Tag(models.Model): 
     tag = models.CharField(max_length=50) 
     def __unicode__(self): 
      return self.tag 

    class Image(models.Model): 
     title = models.CharField(max_length=60, blank=True, null=True) 
     image = models.FileField(upload_to="images/") 
     tags = models.ManyToManyField(Tag, blank=True) 
     albums = models.ManyToManyField(Album, blank=True) 
     created = models.DateTimeField(auto_now_add=True) 
     rating = models.IntegerField(default=50) 
     width = models.IntegerField(blank=True, null=True) 
     height = models.IntegerField(blank=True, null=True) 
     user = models.ForeignKey(User, null=True, blank=True) 
     def save(self, *args, **kwargs): 
      """Save image dimensions.""" 
      super(Image, self).save(*args, **kwargs) 
      im = PImage.open(os.path.join(MEDIA_ROOT, self.image.name)) 
      self.width, self.height = im.size 
      super(Image, self).save(*args, ** kwargs) 

     def size(self): 
      """Image size.""" 
      return "%s x %s" % (self.width, self.height) 

     def __unicode__(self): 
      return self.image.name 

     def tags_(self): 
      lst = [x[1] for x in self.tags.values_list()] 
      return str(join(lst, ', ')) 

     def albums_(self): 
      lst = [x[1] for x in self.albums.values_list()] 
      return str(join(lst, ', ')) 

     def thumbnail(self): 
      return """<a href="/media/%s"><img border="0" alt="" src="/media/%s" height="40" /></a>""" % (
                   (self.image.name, self.image.name)) 
thumbnail.allow_tags = True 
     def __unicode__(self): 
      return self.image.name 

    class AlbumAdmin(admin.ModelAdmin): 
     search_fields = ["title"] 
     list_display = ["title"] 

내 views.py

으로 생각
from django.http import HttpResponseRedirect, HttpResponse 
    from django.shortcuts import get_object_or_404, render_to_response 
    from django.contrib.auth.decorators import login_required 
    from django.core.context_processors import csrf 
    from django.core.paginator import Paginator, InvalidPage, EmptyPage 
    from django.forms import ModelForm 
    from mysite.settings import MEDIA_URL 

    from photo.models import * 

    def main(request): 
     """Main listing.""" 
     albums = Album.objects.all() 
     if not request.user.is_authenticated(): 
      albums = albums.filter(public=True) 

     paginator = Paginator(albums, 10) 
     try: page = int(request.GET.get("page", '1')) 
     except ValueError: page = 1 

     try: 
      albums = paginator.page(page) 
     except (InvalidPage, EmptyPage): 
      albums = paginator.page(paginator.num_pages) 

     for album in albums.object_list: 
      album.images = album.image_set.all()[:4] 

     return render_to_response("photo/list.html", dict(albums=albums, user=request.user, 
      media_url=MEDIA_URL)) 

     class TagAdmin(admin.ModelAdmin): 
      list_display = ["tag"] 

     class ImageAdmin(admin.ModelAdmin): 
      search_fields = ["title"] 
      list_display = ["__unicode__", "title", "user", "rating", "size", "tags_", "albums_", 
    "thumbnail", "created"] 
      list_filter = ["tags", "albums", "user"] 

      def save_model(self, request, obj, form, change): 
       obj.user = request.user 
       obj.save() 

     admin.site.register(Album, AlbumAdmin) 
     admin.site.register(Tag, TagAdmin) 
     admin.site.register(Image, ImageAdmin) 

답변

1

여기 그림이 왜 보이지 않는지 문제가 있습니다. 잘못된 이미지를 호출하고 이미지의 경로를 재정의합니다. 당신은 단지 삽입해야 템플릿의 있도록 이미 모델의 축소판 기능을 넣어 가지고 기억

<ul> 
    {% for album in albums.object_list %} 
    <div class="title">{{ album.title }} ({{ album.image_set.count }} images)</div> 
     <ul> 
      {% for img in album.images %} 
       {{img.thumbnail}} 
      {% endfor %} 
     </ul> 
    {% endfor %} 
</ul> 

이 정확하지만 난 그것을 테스트 할 때 내 문제는 출력이 있도록 허용 태그 기능이 적용되지 않습니다 이미지 대신 링크. 그래서 그것을 수정하고 이미지를 보여주었습니다.

{% for img in album.images %} 
    <a href="{{MEDIA_URL}}{{ img.image}}"> 
     <img border="0" alt="" src="{{MEDIA_URL}}{{ img.image}}" /> 
    </a> 
{% endfor %} 
+0

내 대답을 이해 했습니까? 네가 이해할 수 없다면 나 한테 물어봐. – catherine

관련 문제