Django模板标签从模型输出图像

时间:2011-07-07 01:53:29

标签: django image django-templates django-custom-tags

我是Django的新手,刚刚开始研究我的第一个项目。我有一个位于common.utils.abstact_models.py的模式:

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 / uploads / 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 个答案:

答案 0 :(得分: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 %}