0

我是 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

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

4

1 回答 1

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 %}
于 2011-07-07T02:16:49.613 回答