2011-07-07 39 views
0

我是Django的新手,刚开始工作我的第一个项目。我有一个模式位于common.utils.abstact_models.py:Django模板标签输出模型的图像

class PhotoModel(BaseModel): 
    submitted_by = models.ForeignKey(User) 
    caption = models.TextField(blank=True, null=True) 
    photo = FileBrowseField('Image (Initial Directory)', max_length=100, directory='uploads/') 
    is_default = models.BooleanField(default=False) 

class Meta 
    abstract = True 

也许这也将是有用的。我有另一种模式:

class Photo(BaseModel): 
    event = models.ForeignKey(Event) 
    photo = models.ImageField(max_length=255, upload_to="uploads/event_photos") 
    is_featured = models.BooleanField(default=False) 

我已经上传到MEDIA_URL /上传/ event_photos

我需要写一个模板标签,以当前用户的输出照片的照片。可以说10张照片。 我几乎没有任何代码,我从一些开始。

from django import template 
from common.utils.abstract_models.py import PhotoModel 

register = template.Library() 

def do_random_photos(parser, token): 
    myobjects = PhotoModel.objects.all() 
    return {'objects': myobjects} 

class RandomPhotosNode(template.Node): 
    def __init__(self, context): 
    self. 

def render(self, context): 
    return 

你对这个模板标签有什么建议吗?

回答

1

输出当前用户的照片。您需要添加一个过滤器,使用'request.user.id'获取当前用户的ID。 显示10张照片需要Django的分页。

def show_photos(request): 
    photos = PhotoModel.objects.filter(submitted_by=request.user.id) 
    paginator = Paginator(photos,9) 
    try: 
    page = int(request.GET.get('page',1)) 
    except ValueError: 
    page = 1 
    try: 
    photos = paginator.page(page) 
    except: 
    photos = paginator.page(paginator.num_pages) 
    ctx = {'photos':photos} 
    return render_to_response('a templates', ctx, context_instance = RequestContext(request)) 

那么,在你的模板

{% for photo in photos.object_list %} 
<img src="{{ photo.photo }}" /> 
{% endfor %}