Вынесение процессе пагинации в отдельный метод в проекте Django

Есть три функции:

def index(request):
    """Выводит шаблон главной страницы"""
    post_list = Post.objects.all()
    paginator = Paginator(post_list, 10)
    page_number = request.GET.get('page')
    page_obj = paginator.get_page(page_number)
    context = {
        'page_obj': page_obj
    }
    return render(request, 'posts/index.html', context)


def group_posts(request, slug):
    """Выводит шаблон с группами постов"""
    group = get_object_or_404(Group, slug=slug)
    paginator = Paginator(group.posts.all(), 10)
    page_number = request.GET.get('page')
    page_obj = paginator.get_page(page_number)
    posts = group.posts.all()[:10]
    context = {
        'group': group,
        'paginator': paginator,
        'page_number': page_number,
        'page_obj': page_obj,
        'posts': posts,
    }
    return render(request, 'posts/group_list.html', context)


def profile(request, username):
    """Выводит шаблон профайла пользователя"""
    author = get_object_or_404(User, username=username)
    paginator = Paginator(author.posts.all(), 10)
    page_number = request.GET.get('page')
    page_obj = paginator.get_page(page_number)
    context = {
        'author': author,
        'paginator': paginator,
        'page_number': page_number,
        'page_obj': page_obj,
    }
    return render(request, 'posts/profile.html', context)

В каждой из трех функций повторяется одна и та же строка кода: page_obj = paginator.get_page(page_number).

Мой ревьювер сказал, что нужно процесс пагинации вынести в отдельный метод, т.к. идет частое повторение одного и того же.

Подскажите, как правильно вынести эту строку в отдельный метод, а потом применить в функциях так, чтобы все не сломалось? :)

Вернуться на верх