我正在尝试限制对照片库网站上经过身份验证的用户的访问。我希望经过身份验证的用户可以看到所有照片,而未经身份验证的用户只能看到三张。
我正在使用一个名为 Photologue 的第三方库,它有一个继承自 DetailView() 的类 GalleryDetailView()。我想覆盖画廊详细视图上的 get_context_data() 方法,并在那里添加准备要显示的照片列表的代码,并将该列表添加到模板上下文中。到目前为止,我有:
class CustomGalleryDetailView(GalleryDetailView):
def get_context_data(self, **kwargs):
context = super(CustomGalleryDetailView, self).get_context_data(**kwargs)
if not self.request.user.is_authenticated():
items = OrderedDict(itertools.islice(context.iteritems(), 4))
return items
else:
return context
编辑:根据一些答案,我现在有:
class CustomGalleryDetailView(GalleryDetailView):
def get_context_data(self, **kwargs):
context = super(CustomGalleryDetailView, self).get_context_data(**kwargs)
if not self.request.user.is_authenticated():
context['object'] = Gallery.objects.filter()[:3]
return context
else:
return context
但出于某种原因,经过身份验证和未经身份验证的用户仍然可以看到所有照片。我知道身份验证正在工作,因为我已经玩了几个小时了,并且看到了不同的结果(只是不是我需要的结果)。