我是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
您在撰写此模板标签时有什么建议吗?
答案 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 %}