class_docstr: Common behavior shared between :class:`~flask.Flask` and
  :class:`~flask.blueprints.Blueprint`.
  
  :param import_name: The import name of the module where this object
      is defined. Usually :attr:`__name__` should be used.
  :param static_folder: Path to a folder of static files to serve.
      If this is set, a static route will be added.
  :param static_url_path: URL prefix for the static route.
  :param template_folder: Path to a folder containing template files.
      for rendering. If this is set, a Jinja loader will be added.
  :param root_path: The path that static, template, and resource files
      are relative to. Typically not set, it is discovered based on
      the ``import_name``.
  
  .. versionadded:: 2.0
class_docstr_tok: ["Common","behavior","shared","between",":","class",":","`","~flask.Flask","`","and",":","class",":","`","~flask.blueprints.Blueprint","`",".",":","param","import_name",":","The","import","name","of","the","module","where","this","object","is","defined",".","Usually",":","attr",":","`","__name__","`","should","be","used",".",":","param","static_folder",":","Path","to","a","folder","of","static","files","to","serve",".","If","this","is","set",",","a","static","route","will","be","added",".",":","param","static_url_path",":","URL","prefix","for","the","static","route",".",":","param","template_folder",":","Path","to","a","folder","containing","template","files",".","for","rendering",".","If","this","is","set",",","a","Jinja","loader","will","be","added",".",":","param","root_path",":","The","path","that","static",",","template",",","and","resource","files","are","relative","to",".","Typically","not","set",",","it","is","discovered","based","on","the","``","import_name","``",".","..","versionadded",":",":","2.0"]
docstr: Register a function to run after each request to this object.
  
  The function is called with the response object, and must return
  a response object. This allows the functions to modify or
  replace the response before it is sent.
  
  If a function raises an exception, any remaining
  ``after_request`` functions will not be called. Therefore, this
  should not be used for actions that must execute, such as to
  close resources. Use :meth:`teardown_request` for that.
  
  This is available on both app and blueprint objects. When used on an app, this
  executes after every request. When used on a blueprint, this executes after
  every request that the blueprint handles. To register with a blueprint and
  execute after every request, use :meth:`.Blueprint.after_app_request`.
docstr_tok: ["Register","a","function","to","run","after","each","request","to","this","object",".","The","function","is","called","with","the","response","object",",","and","must","return","a","response","object",".","This","allows","the","functions","to","modify","or","replace","the","response","before","it","is","sent",".","If","a","function","raises","an","exception",",","any","remaining","``","after_request","``","functions","will","not","be","called",".","Therefore",",","this","should","not","be","used","for","actions","that","must","execute",",","such","as","to","close","resources",".","Use",":","meth",":","`","teardown_request","`","for","that",".","This","is","available","on","both","app","and","blueprint","objects",".","When","used","on","an","app",",","this","executes","after","every","request",".","When","used","on","a","blueprint",",","this","executes","after","every","request","that","the","blueprint","handles",".","To","register","with","a","blueprint","and","execute","after","every","request",",","use",":","meth",":","`",".Blueprint.after_app_request","`","."]
code: def after_request(self, f: T_after_request) -> T_after_request:
      """Register a function to run after each request to this object.
  
      The function is called with the response object, and must return
      a response object. This allows the functions to modify or
      replace the response before it is sent.
  
      If a function raises an exception, any remaining
      ``after_request`` functions will not be called. Therefore, this
      should not be used for actions that must execute, such as to
      close resources. Use :meth:`teardown_request` for that.
  
      This is available on both app and blueprint objects. When used on an app, this
      executes after every request. When used on a blueprint, this executes after
      every request that the blueprint handles. To register with a blueprint and
      execute after every request, use :meth:`.Blueprint.after_app_request`.
      """
      self.after_request_funcs.setdefault(None, []).append(f)
      return f
  
imports: from __future__ import annotations
  import importlib.util
  import os
  import pathlib
  import sys
  import typing
  from collections import defaultdict
  from functools import update_wrapper
  from jinja2 import FileSystemLoader
  from werkzeug.exceptions import default_exceptions
  from werkzeug.exceptions import HTTPException
  from werkzeug.utils import cached_property
  from ..None import typing
  from ..cli import AppGroup
  from ..helpers import get_root_path
  from ..templating import _default_template_ctx_processor
label_desc: Use image node_id 20 for calling the Scaffold obj's underlying member method code with example usage: obj.after_request(f) and returns: f