docs: def process_view(self, request, view_func, view_args, view_kwargs):
          """
          Per-request mechanics for the current page object.
          """
  
          # Load the closest matching page by slug, and assign it to the
          # request object. If none found, skip all further processing.
          slug = path_to_slug(request.path_info)
          pages = Page.objects.with_ascendants_for_slug(slug,
                          for_user=request.user, include_login_required=True)
          if pages:
              page = pages[0]
              setattr(request, "page", page)
              context_processors.page(request)
          else:
              return
  
          # Handle ``page.login_required``.
          if page.login_required and not request.user.is_authenticated():
              return redirect_to_login(request.get_full_path())
  
          # If the view isn't yacms's page view, try to return the result
          # immediately. In the case of a 404 with an URL slug that matches a
          # page exactly, swallow the exception and try yacms's page view.
          #
          # This allows us to set up pages with URLs that also match non-page
          # urlpatterns. For example, a page could be created with the URL
          # /blog/about/, which would match the blog urlpattern, and assuming
          # there wasn't a blog post with the slug "about", would raise a 404
          # and subsequently be rendered by yacms's page view.
          if view_func != page_view:
              try:
                  return view_func(request, *view_args, **view_kwargs)
              except Http404:
                  if page.slug != slug:
                      raise
  
          # Run page processors.
          extra_context = {}
          model_processors = page_processors.processors[page.content_model]
          slug_processors = page_processors.processors["slug:%s" % page.slug]
          for (processor, exact_page) in slug_processors + model_processors:
              if exact_page and not page.is_current:
                  continue
              processor_response = processor(request, page)
              if isinstance(processor_response, HttpResponse):
                  return processor_response
              elif processor_response:
                  try:
                      for k, v in processor_response.items():
                          if k not in extra_context:
                              extra_context[k] = v
                  except (TypeError, ValueError):
                      name = "%s.%s" % (processor.__module__, processor.__name__)
                      error = ("The page processor %s returned %s but must "
                               "return HttpResponse or dict." %
                               (name, type(processor_response)))
                      raise ValueError(error)
  
          return page_view(request, slug, extra_context=extra_context)