Python: Как вернуть переменные из функции и собрать контекст уже непосредственно в функции

Я вынес в в функцию page_paginator процесс пагинации и далее с помощью метода update добавляю в другие функции его атрибуты к контексту. Мне необходимо вернуть из функции page_paginator результат и присвоить его в переменную, а затем эту переменную положит в словарь context. Помогите разобрать эту ситуацию и сделать? Честно говоря я уже немного запутался, учу питон недавно.

from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator
from django.shortcuts import render, get_object_or_404, redirect

from posts.forms import PostForm
from posts.models import Post, Group, User

POSTS_PER_PAGE = 10


def page_paginator(queryset, request):
    """Вынесение процесса пагинации в отдельный метод"""
    paginator = Paginator(queryset, POSTS_PER_PAGE)
    page_number = request.GET.get('page')
    page_obj = paginator.get_page(page_number)
    return {
        'paginator': paginator,
        'page_number': page_number,
        'page_obj': page_obj,
    }


def index(request):
    """Шаблон главной страницы"""
    posts = Post.objects.select_related('group', 'author')
    context = page_paginator(posts, request)
    return render(request, 'posts/index.html', context)


def group_posts(request, slug):
    """Шаблон с группами постов"""
    group = get_object_or_404(Group, slug=slug)
    posts = group.posts.all()
    context = {
        'group': group,
        'posts': posts,
    }
    context.update(page_paginator(posts, request))
    return render(request, 'posts/group_list.html', context)


def profile(request, username):
    """Шаблон профайла пользователя"""
    author = get_object_or_404(User, username=username)
    posts = author.posts.all()
    context = {
        'author': author,
        'posts': posts,
    }
    context.update(page_paginator(posts, request))
    return render(request, 'posts/profile.html', context)


def post_detail(request, post_id):
    """Шаблон отдельного поста"""
    post = get_object_or_404(Post, pk=post_id)
    author = Post.objects.select_related('group','author')
    context = {
        'post': post,
        'author': author
    }
    return render(request, 'posts/post_detail.html', context)


@login_required
def post_create(request):
    """Создание нового поста"""
    form = PostForm(request.POST or None)
    if request.method == 'POST' and form.is_valid():
        post = form.save(commit=False)
        post.author = request.user
        form.save()
        return redirect('posts:profile', request.user)
    return render(request, 'posts/create_post.html', {'form': form})


def post_edit(request, post_id):
    """Эта функция редактирует пост по id и сохраняет его в БД"""
    post = get_object_or_404(Post, id=post_id)
    if request.user.id != post.author.id:
        return redirect('posts:post_detail', post_id=post_id)
    form = PostForm(data=request.POST or None, instance=post)
    if request.method == 'POST' and form.is_valid():
        form.save()
        return redirect('posts:post_detail', post_id)
    context = {
        'form': form,
        'is_edit': True,
        'post': post,
    }
    return render(request, 'posts/create_post.html', context)
Вернуться на верх