from models import Album, Photo
def album_view(request, slug):
- album = Album.objects.get(slug__exact=slug)
- photos = Photo.objects.filter(album=album).order_by('order', 'image')
- return django.views.generic.list_detail.object_list(request, photos, paginate_by=20, template_name='photo/photo_index.html')
+ try:
+ album = Album.objects.get(slug__exact=slug)
+ photos = Photo.objects.filter(album=album).order_by('order', 'image')
+ except:
+ raise Http404
+ return django.views.generic.list_detail.object_list(request, photos, paginate_by=20, template_name='photo/photo_index.html', allow_empty=False)
def photo_view(request, slug, id):
- id = int(id)
- album = Album.objects.get(slug__exact=slug)
- photos = Photo.objects.filter(album=album).order_by('order', 'image')
- photo_qs = Photo.objects.filter(id=id)
- found_prev = False
- prev_photo = None
- found_next = False
- next_photo = None
- for photo in photos:
- if not found_prev:
- if not photo.id == id:
- prev_photo = photo
- else:
- found_prev = True
- if found_next:
- next_photo = photo
- break
- if photo.id == id:
- found_next = True
+ try:
+ id = int(id)
+ album = Album.objects.get(slug__exact=slug)
+ photos = Photo.objects.filter(album=album).order_by('order', 'image')
+ photo_qs = Photo.objects.filter(id=id)
+ found_prev = False
+ prev_photo = None
+ found_next = False
+ next_photo = None
+ for photo in photos:
+ if not found_prev:
+ if not photo.id == id:
+ prev_photo = photo
+ else:
+ found_prev = True
+ if found_next:
+ next_photo = photo
+ break
+ if photo.id == id:
+ found_next = True
+ except:
+ raise Http404
return django.views.generic.list_detail.object_detail(request, photo_qs, object_id=id, template_name='photo/photo.html', extra_context={"next_photo": next_photo, "prev_photo": prev_photo })