2011-07-07 38 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 %}