code: def render_region(widget=None, request=None, view=None,
                    page=None, region=None):
      
  
      # change the request
      if not isinstance(request, dict):
          request.query_string = None
          request.method = "GET"
  
      if not hasattr(request, '_feincms_extra_context'):
          request._feincms_extra_context = {}
  
      leonardo_page = widget.parent if widget else page
      render_region = widget.region if widget else region
  
      # call processors
      for fn in reversed(list(leonardo_page.request_processors.values())):
          try:
              r = fn(leonardo_page, request)
          except:
              pass
  
      contents = {}
  
      for content in leonardo_page.content.all_of_type(tuple(
              leonardo_page._feincms_content_types_with_process)):
  
          try:
              r = content.process(request, view=view)
          except:
              pass
          else:
              # this is HttpResponse object or string
              if not isinstance(r, six.string_types):
                  r.render()
                  contents[content.fe_identifier] = getattr(r, 'content', r)
              else:
                  contents[content.fe_identifier] = r
  
      from leonardo.templatetags.leonardo_tags import _render_content
  
      region_content = ''.join(
          contents[content.fe_identifier] if content.fe_identifier in contents else _render_content(
              content, request=request, context={})
          for content in getattr(leonardo_page.content, render_region))
  
      return region_content
docs: returns rendered content
      this is not too clear and little tricky,
      because external apps needs calling process method