Джанго: вернитесь на правильную страницу - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть простое приложение для блогов, использующее paginator для перечисления статей.

Я хочу иметь возможность добавить кнопку на странице сведений о статье, которая будет направлять пользователя на ту же страницу, на которой находится эта статья.

Я хочу взять слаг из текущего URL и отправить его в paginator, чтобы он направлял пользователя на? Страницу = X, где находится статья.

Я проверил документы на paginator и не нашел ни одногоинформация о том, как получить номер страницы конкретного объекта.

мои просмотры:

def blog(request):
    posts = Article.objects.all()
    paginator = Paginator(posts, 3) 
    page = request.GET.get('page') 
    posts = paginator.get_page(page) 
    return render(request,'blog.html',{'posts':posts})

def article_id(request,slug):
    articleid = Article.objects.get(slug=slug)
    return render(request, 'blogid.html', {'article':articleid})

мои URL:

urlpatterns = [
    url(r'^$', views.blog, name = 'blog'),
    url(r'^(?P<slug>[\w-]+)/$', views.article_id, name = 'article_id'),
   ]

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Решено с помощью ответа Джанкарло.

Я добавил ниже к article_id

def article_id(request,slug):
articleid = Article.objects.get(slug=slug)
position = Article.objects.filter(date__gt=articleid.date).count()
page = str(int((position)/3)+1)
return render(request, 'blogid.html', {'article':articleid, 'page':page})

И тогда в шаблоне ссылка выглядит как / blog /? Page = {{page}}

0 голосов
/ 11 декабря 2018

Вы можете получить позицию объекта через

position=Article.objects.filter(your_filter_key=your_filter_value).order_by('other_filter_order').count()

Затем получить номер страницы через

items_per_page=yout_items_per_page
page = int(position/items_per_page)
...