Я работаю над приложением портфолио изображений, и у меня есть URL, который выглядит следующим образом:
url(r'^(?P<slug_val>[-\w]+)/(?P<page>[0-9]+)/(?P<id>[0-9]+)/$', 'portfolio.views.imagedetail')
По сути, элемент page
присутствует только там, поэтому я могу приятно перенаправить пользователя обратно на страницу миниатюр, с которых он пришел. Тем не менее, если URL-адрес передается, а затем некоторые изображения добавляются или удаляются перед изображением, он может больше не отображаться на этой странице. В этом случае я бы хотел перенаправить пользователей на:
slug/correctpage/id
Что я не могу понять, так это как определить, на какой странице находится изображение, используя встроенную нумерацию страниц Django. Вот что у меня так далеко:
def imagedetail(request, slug_val, page, id):
p = get_object_or_404(MyPortfolio, slug=slug_val)
paginator = Paginator(p.images.all(), 25)
# find out which page the image with id is on, if it's not page,
# then redirect, otherwise render
Я знаю, что мог бы перебирать каждую страницу, но похоже, что она попадет в базу данных без необходимости, и я уверен, что должен быть более элегантный способ сделать это.
Спасибо
Дом