flask源码系列之app.py

定义的变量

template_folder = None # 模板文件目录,写了之后会从这个目录中去找html模板文件,如果不添加模板,则为None。
after_request_funcs = None # 每次request请求之后需要调用的函数列表的一个字典, The key of the dictionary is the name of the blueprint this function is active for, None for all requests. 调用after_request()向此变量中注册(添加)函数
app_ctx_globals_class # flask.ctx._AppCtxGlobals的别名
before_first_request_funcs = None # application实例的第一个请求开始时将要调用的函数的列表。 使用before_first_request()装饰器向此变量中注册函数。
before_request_funcs = None # 存放每次request请求开始时要运行的函数的字典,The key of the dictionary is the name of the blueprint this function is active for, or None for all requests. 使用before_request()装饰器来向此变量注册(添加)函数。
blueprints = None # 所有附加的蓝图名字的字典。 蓝图可以多次附加,因此字典不会告诉你蓝图连接的次数。
config = None # Config类,配置字典,比正常字典多了一个功能,能从文件加载配置
config_class # flask.config.Config的别名
env # application运行的环境。对应的是config配置中key为'ENV'的值,通常由FLASK_ENV环境变量设置的,如果在代码中设置,可能不会按预期运行。默认为'production'。
error_handler_spec = None # 所有已注册的错误处理器的字典,在application中活动的错误处理的key是None,否则key是蓝图的名字。每个键指向另一个字典,其中键是http异常的状态代码。 特殊键None指向元组列表,其中第一项是实例检查的类,第二项是错误处理函数。使用errorhandler()装饰器来注册一个错误处理器。
extensions = None # 字典。存储应用扩展。以如下方式注册扩展,key必须与extension模块名匹配。例如,如果在flask_foo中有“Flask-Foo”扩展名,则key将为'foo'。
#if not hasattr(app, 'extensions'):
   	#app.extensions = {}
	#app.extensions['extensionname'] = SomeObject()
has_static_folder # 如果包绑定对象的容器具有静态文件目录,则为True。
import_name = None # application所属的包或者模块的名字。
instance_path = None # 实例文件夹的路径

jinja_env # Jinja环境用于加载模板。第一次访问此属性时会创建环境。 之后更改jinja_options将无效。
jinja_environment # alias of flask.templating.Environment
jinja_loader # 这个包绑定对象的Jinja加载器
# 在create_jinja_environment()中会将jinja_options传递给 jinja environment。在环境创建(通过jinja_env创建)后再修改此options不起作用
jinja_options = {'extensions': ['jinja2.ext.autoescape', 'jinja2.ext.with_']}

json_decoder # alias of flask.json.JSONDecoder
json_encoder # alias of flask.json.JSONEncoder
request_class # alias of flask.wrappers.Request
response_class # alias of flask.wrappers.Response

root_path = None # 在文件系统中,项目包的绝对路径。用于查找包内的资源。
secret_key # 如果设置secret_key,则加密组件可以使用它来签署cookie和其他内容。如果要使用安全cookie,请将此值设置为复杂的随机值,还可以通过config中的'SCRET_KEY'来配置。
send_file_max_age_default # timedelta对象,作为send_file()函数中cache_timeout的默认值。 默认为12小时。还可以通过config中key 'SEND_FILE_MAX_AGE_DEFAULT'来配置

session_cookie_name # 安全cookie使用它作为session cookie的名称。config中可以使用key 'SESSION_COOKIE_NAME'来配置,默认为'session'。
session_interface = <flask.sessions.SecureCookieSessionInterface object> # session接口

shell_context_processors # 存放当shell上下文被创建时应该运行的shell上下文处理器函数的list

static_folder # 静态文件目录的绝对路径。
static_url_path # 访问的静态路由前缀。如果在初始化的时候没有配置,则由static_folder决定。

teardown_appcontext_funcs = None # 销毁应用上下文时调用的函数list。如果请求结束,应用上下文也会结束,这就是存储与数据库断开连接的代码的位置。
teardown_request_funcs = None # 包含每次请求后要调用的函数列表的字典,即使发生了异常也是如此。字典的key是该函数活动所在的蓝图名,或者是None。如果在处理请求时发生异常,则会将其传递给每个teardown_request函数。teardown_request()装饰器注册函数到此字典中。

template_context_processors = None # 存放 填充模板上下文时要调用的函数list的字典,key是这些函数所在的蓝图名或None。使用context_processor()装饰器将函数注册到此字典。
template_folder = None # 需要添加模板文件的查找路径

test_cli_runner_class = None # CliRunner子类
test_client_class = None # 调用test_client()时使用的测试客户端。
test_request_context # 为从给定值创建的WSGI环境创建RequestContext。 这在测试期间非常有用,您可能希望在不调度完整请求的情况下运行使用请求数据的函数。
testing # 测试标志。 将此设置为True以启用Flask扩展的测试模式.

url_build_error_handlers = None # 当调用url_for()引发BuildError异常时需要调用的函数list。
url_default_functions = None # 包含可用作URL值预处理器的函数列表的字典
url_map = None # 是Map类的实例。在类创建之后任何路由连接之前使用它来修改路由转换器。
url_map_class # alias of werkzeug.routing.Map
url_rule_class # alias of werkzeug.routing.Rule
url_value_preprocessors = None # 包含在before_request_funcs函数之前调用的函数列表的字典。字典的key是此函数所处的蓝图的名称,或者对于所有请求都是None。使用url_value_preprocessor()注册函数。

use_x_sendfile # 如果要使用X-Sendfile特性,请启用此功能。 
view_functions = None # 已注册的所有视图功能的字典。key是试图函数名称,它们也用于生成URL,值是函数对象本身。使用route()装饰器来注册视图函数。

default_config = ImmutableDict( # 默认配置参数
    {
        "ENV": None,
        "DEBUG": None,
        "TESTING": False,
        "PROPAGATE_EXCEPTIONS": None,
        "PRESERVE_CONTEXT_ON_EXCEPTION": None,
        "SECRET_KEY": None,
        "PERMANENT_SESSION_LIFETIME": timedelta(days=31),
        "USE_X_SENDFILE": False,
        "SERVER_NAME": None,
        "APPLICATION_ROOT": "/",
        "SESSION_COOKIE_NAME": "session",
        "SESSION_COOKIE_DOMAIN": None,
        "SESSION_COOKIE_PATH": None,
        "SESSION_COOKIE_HTTPONLY": True,
        "SESSION_COOKIE_SECURE": False,
        "SESSION_COOKIE_SAMESITE": None,
        "SESSION_REFRESH_EACH_REQUEST": True,
        "MAX_CONTENT_LENGTH": None,
        "SEND_FILE_MAX_AGE_DEFAULT": timedelta(hours=12),
        "TRAP_BAD_REQUEST_ERRORS": None,
        "TRAP_HTTP_EXCEPTIONS": False,
        "EXPLAIN_TEMPLATE_LOADING": False,
        "PREFERRED_URL_SCHEME": "http",
        "JSON_AS_ASCII": True,
        "JSON_SORT_KEYS": True,
        "JSONIFY_PRETTYPRINT_REGULAR": False,
        "JSONIFY_MIMETYPE": "application/json",
        "TEMPLATES_AUTO_RELOAD": None,
        "MAX_COOKIE_SIZE": 4093,
    }
)

定义的方法


# /flask/app.py
class Flask(_PackageBoundObject):
	@setupmethod
    def add_template_filter(self, f, name=None):
        """注册自定义的模板过滤器,像template_filter装饰器一样运作。
        :param name: 过滤器的名字,若没有指定,则函数名作为过滤器名。
        """
        pass

	@setupmethod
    def template_filter(self, name=None):
        """被用来注册自定义模板过滤器的装饰器,可以指定过滤器的名字。
        Example::
        @app.template_filter()
        def reverse(s):
            return s[::-1]
              
        :param name: 过滤器的名字,若没有指定,则函数名作为过滤器名。
        """
         pass

	@setupmethod
    def add_template_global(self, f, name=None):
        """注册自定义模板全局函数的装饰器,像template_global装饰器一样运作。
        :param name: 全局函数的名字,若没有指定,则函数名作为全局函数名。
        """
        pass

	@setupmethod
    def template_global(self, name=None):
        """用于注册自定义模板全局函数的装饰器,可以指定全局函数的名字。
        Example::
        @app.template_global()
        def double(n):
            return 2 * n
                
        :param name: 全局函数的名字,若没有指定,则函数名作为全局函数名。
        """
        pass

 	@setupmethod
    def add_template_test(self, f, name=None):
        """注册自定义模板测试的装饰器,像template_test装饰器一样运作。
        :param name: 模板测试的名字,若没有指定,则函数名作为模板测试名。
        """
        pass

	@setupmethod
    def template_test(self, name=None):
        """用于注册自定义模板测试的装饰器。 可以为测试指定名称。
         Example::
          @app.template_test()
          def is_prime(n):
              pass
        :param name: 模板测试的名字,若没有指定,则函数名作为模板测试名。
        """
        pass

	@setupmethod
    def add_url_rule(self, rule, endpoint=None, view_func=None, provide_automatic_options=None, **options):
	    """
	    连接URL规则。 与route()装饰器完全一样。 如果提供了view_func(视图函数),将向端点注册。举例:
	    @app.route('/')
		def index():
		    pass
		等价于:
		def index():
		    pass
		app.add_url_rule('/', 'index', index)
		如果未提供view_func,则需要将端点连接到视图函数,如下所示:
		app.view_functions['index'] = index
		route()内部调用了add_url_rule(),因此如果要通过子类化自定义行为,则只需更改此方法。
		:param rule: URL规则,字符串。
		:param endpoint: Flask将视图函数的名称视为端点,端点是用来注册URL规则的。
		:param view_func:当request请求对应的端点时调用端点对应的view_func(视图)函数。
		:param provide_automatic_options: 是否应自动添加OPTIONS方法。 这也可以通过在添加规则之前设置view_func.provide_automatic_options = False来控制。
		:param options: 这些options会隐式地转发Rule object。例如,
		@app.route('/',methods=['GET', 'POST'])
		def index():
		    pass
	    """
   		pass

	@setupmethod
    def after_request(self, f):
        """
		注册request请求后要运行的函数。 你的函数必须带一个参数(,response_class的一个实例),并返回一个新的response对象或相同(参见:meth:`process_response`)。
        """
        pass

	def app_context(self):
		"""
		创建一个应用上下文(AppContext),使用with语句块来推送上下文,这会使得current_app指向此application。
		处理request请求时或者运行CLI command时,RequestContext.push()会自动推送应用程序上下文。 通过这个方法可以手动创建上下文(比如在脚本中要使用application的应用上下文时,因为应用上下文和请求上下文的生命周期都是在请求发起时开始,至请求结束时终止,因此在单独的脚本中是无法使用应用上下文、请求上下文的。)。
		例如,
		with app.app_context():
    		init_db()		
    """
    pass

	def auto_find_instance_path(self):
		"""
		如果未将instance_path提供给application类的构造函数,会尝试找到它。它基会计算名为instance的文件夹的路径。
		"""
		pass

	@setupmethod
    def before_first_request(self, f):
		"""
		在第一次请求此application实例之前注册要运行的函数。说是注册,其实就是将函数名存在list中,将在不带任何参数的情况下调用该函数,并忽略其返回值。
		"""
		pass

	@setupmethod
    def before_request(self, f):
        """
        注册每次request请求之前需要运行的函数,该函数将在没有任何参数的情况下调用。 If it returns a non-None value, the value is handled as if it was the return value from the view, and further request handling is stopped.
        """
        pass

	@setupmethod
    def context_processor(self, f):
        """注册模板上下文处理器函数,所谓的注册其实就是将函数加入的一个字典中"""
        pass
        
	def create_global_jinja_loader(self):
		"""为Jinja2环境创建加载器。 可以用来仅覆盖加载器并保持其余部分不变。 不鼓励重写此功能。 相反,应该覆盖jinja_loader()函数。全局加载器在application的加载器和各个蓝图之间进行调度。
		"""
		pass

	def create_jinja_environment(self):
		"""基于jinja_options和应用程序的各种与Jinja相关的方法创建Jinja环境。 在此之后更改jinja_options将不起作用。 还将与Flask相关的全局变量和过滤器添加到环境中。
		"""
		pass

	def create_url_adapter(self, request):
		"""为给定的request请求创建URL适配器。URL适配器是在尚未设置请求上下文的时候创建的,因此请求将显式传递。
		"""
		pass

	@property
    def debug(self):
    	"""是否启用调试模式。 当使用flask run启动开发服务器时,将显示一个交互式调试器并在代码更改时自动重新加载服务器。对应application中config字典中的'DEBUG' key的值。当env为'development'并被FLASK_DEBUG环境变量覆盖时,将启用此功能。
    	Default: True if env is 'development', or False otherwise.
    	"""
		pass

	def dispatch_request(self):
		"""调度请求。匹配URL并返回视图函数或错误处理程序的返回值。该返回值不一定是response对象。如果要将返回值转换为response对象,需要调用make_response()。
		"""
		pass
	def do_teardown_appcontext(self, exc=_sentinel):
		"""在弹出应用上下文之前调用。处理请求时,将在弹出请求上下文之后弹出应用上下文。这将调用被teardown_appcontext()修饰的所有函数。 然后发送appcontext_tearing_down信号。
AppContext.pop()会调用此方法。
		"""
		pass
	
	def do_teardown_request(self, exc=_sentinel):
		"""在request请求被派发且response响应返回之后且弹出请求上下文之前调用此方法,。
		如果蓝图处理了请求,则调用用teardown_request()和Blueprint.teardown_request()修饰的所有函数。最后,发送request_tearing_down信号。
		RequestContext.pop()调用此方法,在测试期间可能会延迟,以维护对资源的访问。
		:param exc: 调度request请求时引发的未处理异常。若未通过,则从当前异常信息中检查;若通过则去到每一个teardown函数。
		"""
		pass

 	@setupmethod
    def endpoint(self, endpoint):
        """一个将函数注册成端点的装饰器(其实就是一个字典(self.view_functions),key是endpoint(端点名),value是函数名)
        举例::
        @app.endpoint('example.endpoint')
        def example():
            return "example"

        :param endpoint: 端点的名称
        """
		pass
       
	@setupmethod
    def errorhandler(self, code_or_exception):
    	"""通过code_or_exception类来注册一个函数处理错误。用于在给定错误代码的情况下注册函数的一个装饰器,
    	举例子:
    	@app.errorhandler(404) # 通过错误码注册
		def page_not_found(error):
		    return 'This page does not exist', 404

		@app.errorhandler(DatabaseError) # 通过异常注册
		def special_exception_handler(error):
		    return 'Database connection failed', 500

		:param code_or_exception: 整数错误处理器码(后面也是通过这个码获得对应的exception对象)或任意exception对象。
    	"""
    	pass

	def full_dispatch_request(self):
		"""分派请求,并在代码顶部执行请求预处理和后处理以及HTTP异常捕获和错误处理。
		"""
		pass

	@property
    def got_first_request(self):
        """当application开始处理第一个request请求时,此属性被设置为True。
        """
        pass

	def handle_exception(self, e):
		"""处理没有对应错误处理程序的异常,或者从错误处理程序中引发的异常。这总是会导致500 InternalServerError。总会发送got_request_exception信号。
		如果propagate_exceptions为True,例如在调试模式下,则会重新引发错误,以便调试器可以显示它。否则,将记录原始异常,并返回InternalServerError。
		如果为InternalServerError或500注册了错误处理器,则将使用错误处理器。为了保持一致性,处理器将始终接收InternalServerError。原始未处理的异常可以通过e.original_exception得到。
		"""
		pass

	def handle_http_exception(self, e):
		"""处理HTTP exception。默认情况下,会调用已注册的错误处理器,然后将异常作为response来返回。
		"""
		pass

	def handle_url_build_error(self, error, endpoint, values):
		"""Handle BuildError on url_for(),处理在url_for()中引发的BuildError。
		"""
		pass

	def handle_user_exception(self, e):
		"""每当出现的异常应该处理的时候调用此方法。HTTPException比较特殊,它会被发送给handle_http_exception()方法。此方法返回响应值或重新引发同样追溯的异常。
		"""
		pass
	
	
	def inject_url_defaults(self, endpoint, values):
		"""在字典中为给定的端点注入URL默认值。此方法在内部使用,并在URL构建时自动调用。
		"""
		pass

	 def iter_blueprints(self):
        """按照注册的顺序迭代所有蓝图。
        """
        pass



 def log_exception(self, exc_info):
 	"""记录异常。如果debug被禁用且在调用处理器之前,可由handle_exception()调用。默认在logger中将异常记录为错误。
 	"""
 	pass
 	
logger # application的标准python logger(日志记录器),在debug模式下,logger的级别将设置为DEBUG。如果looger没有配置相应的handler(处理器),会添加一个默认handler。
def make_config(self, instance_relative=False):
	"""被Flask构造函数用来创建config属性。instance_relative参数从Flask的构造函数(名为instance_relative_config)传入,并指示config是应该相对于实例路径还是application的根目录。
	"""
	pass

def make_default_options_response(self):
	"""调用此方法以创建默认的OPTIONS response响应。可以通过类继承来更改OPTIONS response响应的默认行为。
	"""
	pass

 def make_null_session(self):
 	"""创建missing session的新实例。建议更换session_interface,而不是覆盖此方法。
 	"""
 	pass 

def make_response(self, rv):
	"""将视图函数的返回值转换成一个response_class的实例对象。
	:param rv: 视图函数的返回值。视图函数必须return一个response。return None或者视图函数末尾没有return都是不被允许的。
	允许使用下面几种类型:
	The following types are allowed for view_rv:
	str (unicode in Python 2):使用编码为UTF-8的字符串作为body创建response对象。
	bytes (str in Python 2):使用bytes(字节)作为body创建response对象。
	dict:字典对象在返回之前将被jsonify。
	tuple:
	常为(body,status,headers),(body,status)或(body,headers),其中body是此处允许的任何其他类型,status是字符串或整数,headers是字典或列表(key,value)元组。如果body是response_class实例,则status将覆盖exiting值并扩展headers。

response_class:对象不变的返回
other Response class:该对象被强制转换为response_class
callable():该函数被WSGI application调用。结果常用于创建response对象。
	"""
	pass

 def make_shell_context(self):
 	"""返回该application的交互式shell的shell上下文。将运行所有已注册的shell上下文processors。
 	"""
 	pass

@locked_cached_property
def name(self):
	"""application名称。当import_name是main时,可以推测出此名,否则返回值即为import_name。当Flask需要显示application的名称时使用此名,这个名称可以被设置和覆盖。
	"""
	pass

def open_instance_resource(self, resource, mode='rb'):
	"""从application的实例文件夹(instance_path)中打开一个resource,否则像open_resource()一样工作。实例resorce也可以‘写入’模式打开。
	:param resource: 资源的名称。 要访问子文件夹中的资源,请使用正斜杠作为分隔符。
    :param mode: 资源文件的打开模式,默认为'rb'。
	"""
	pass

def open_resource(self, resource, mode='rb'):
	"""从application的资源目录中打开一个resouce,
	举例子,项目不睦如下
	/myapplication.py
	/schema.sql
	/static
    	/style.css
	/templates
    	/layout.html
    	/index.html
    如果你想要打开schema.sql文件,应该像下面代码一样使用:
	with app.open_resource('schema.sql') as f:
   		contents = f.read()
    	do_something_with(contents)

	:param resource: 资源的名称。 要访问子文件夹中的资源,请使用正斜杠作为分隔符。
    :param mode: 资源文件的打开模式,默认为'rb'。
	"""
	pass

def open_session(self, request):
	"""创建或打开新session。默认将所有session数据存储在已签名的cookie中。需要设置secret_key。建议更换session_interface,而不是覆盖此方法。
	:param request: request_class的实例。
	"""
	pass



permanent_session_lifetime # timedelta对象,用于设置永久session的过期日期。默认为31天,也可以在config中使用’PERMANENT_SESSION_LIFETIME‘ key来修改此配置。

def preprocess_request(self):
	"""在调度请求之前调用。调用url_value_preprocessors(字典)注册application和当前蓝图,然后调用before_request_funcs(字典)注册application和蓝图。
	如果任何before_request()处理程序返回非None值,则处理该值就好像它是视图中的返回值一样,并且停止进一步的请求处理。
	"""
	pass

@property
def preserve_context_on_exception(self):
	"""如果config中设置了’PRESERVE_CONTEXT_ON_EXCEPTION‘,则返回config中对应的值,否则返回合理的默认值。
	"""
	pass

def process_response(self, response):
	"""为了在response发送给WSGI服务器之前修改response,可以重写此方法。默认地,会调用所有由after_response()装饰器修饰的函数。
	:param response: 一个response_class对象。
	:return: 新的或和原来一样的response,仍然是resonse_class的一个实例对象。
	"""
	pass

@property
def propagate_exceptions(self):
	"""如果config中设置了'PROPAGATE_EXCEPTIONS',则返回config中对应的值,否则,返回合适的默认值。
	"""
	pass
 @setupmethod
 def register_blueprint(self, blueprint, **options):
 	"""在application中注册一个蓝图。传递给此方法的关键字参数将覆盖蓝图设置的默认值。
 	在application中的变量中记录了蓝图之后会调用blueprints对象的register()方法。
 	:param blueprint: 要注册的蓝图对象。
    :param url_prefix: 蓝图路由将以此为前缀。
    :param subdomain: 蓝图路由将会匹配这个子域名。
    :param url_defaults: 蓝图路由将使用视图参数的这些默认值。
    :param options: Additional keyword arguments are passed to
  	"""
 	pass

@setupmethod
def register_error_handler(self, code_or_exception, f):
	"""Alternative error attach function to the errorhandler() decorator that is more straightforward to use for non decorator usage.
	"""
	pass




def request_context(self, environ):
	"""创建一个来代表WSGI环境的请求上下文对象。使用'with'语句块来推送上下文,使得'request'指向此request请求。
	通常,不应当让你的代码来调用它,因为当处理请求时wsgi_app()会自动推送请求上下文。
	要创建环境和上下文请使用test_request_context()而不是此方法。
	:param environ: a WSGI environment
	"""
	pass

def route(self, rule, **options):
	"""用来为指定的URL规则注册视图函数的一个装饰器。此方法与add_url_rule()的作用相同,只不过此方法是作为一个装饰器来用:
	@app.route('/') # 所谓注册就是将这两个东西关联起来,一般是存入字典中,一个为key,一个为value
	def index():
    	return 'Hello World'
    
    :param rule: URL规则的字符串。
    :param endpoint: 此URL规则要注册的端点。Flask自身假定(默认)视图函数名就是端点。 
    :param options: options参数要转发给‘werkzeug.routing.Rule`对象。
	"""
	pass

def run(self, host=None, port=None, debug=None,
            load_dotenv=True, **options):
    """在本地开发服务器上运行application。不要在生产环境中使用run()。它并不能满足生产服务器的安全性和性能要求。建议部署WSGI服务器。
    如果debug标签设置为True,那么当代码修改时会会自动重新加载,并且遇到异常时会显示debug信息。
    如果要在debug模式下运行application,但是在交互调试器中禁用代码执行,那么就可以将use_evalex=False,这将使调试器的回溯屏幕保持活动状态,但禁用代码执行。
    不建议使用此方法进行自动重载开发,因为支持得不是很好,最好是在flask命令行脚本中实现。
    :param host: 监听得主机名。设置为'0.0.0.0'可让外部ip访问。默认为'127.0.0.1'或者是config变量中配置的'SERVER_NAME'。
    :param port: web服务器得端口。默认为5000或者是config变量中配置的'SERVER_NAME'。
	:param debug: 如果指定,则启用或禁用debug模式。
	:param load_dotenv: 加载最先找到的.env和.flaskenv文件以设置环境变量。还会将工作目录更改为包含找到的第一个文件的目录。
	:param options: 这些参数会传递给Werkzeug server。werkzeug.serving.run_simple() 。
    """
    pass

def save_session(self, session, response):
	"""如果需要更新,则保存session。默认行为,请查看open_session()。
	建议更换session_interface,而不是覆盖此方法。
	:param session: 被保存的session。是~werkzeug.contrib.securecookie.SecureCookie对象。
	:param response: response_class的一个实例。
	"""
	pass

def select_jinja_autoescape(self, filename):
	"""如果模板文件名为None,return True。如果模板文件名以('.html', '.htm', '.xml', '.xhtml')结尾,return True。
	"""
	pass

def send_static_file(filename):
	"""从静态文件目录将静态文件发送给浏览器
	"""
	pass

@setupmethod
def shell_context_processor(self, f):
	"""注册shell上下文处理器函数,就是将函数f存入一个shell_context_processors的list中。
	"""
	pass

def should_ignore_error(self, error):
	"""是否忽略错误
	:return: False
	"""
	pass

def do_teardown_appcontext(self, exc=_sentinel):
	"""注册一个应用上下文结束时会调用的函数。这些函数在弹出请求上下文之后调用。
	举例子:
	ctx = app.app_context()
	ctx.push()
	...
	ctx.pop()
	例子中的ctx.pop()执行的时,在应用上下文从活动上下文栈中移除之前teardown函数将会被调用。
	由于请求上下文通常还管理应用上下文,因此在弹出请求上下文时也会调用它。当由于未处理的异常而调用拆卸函数时,它将传递一个错误对象。
	"""
	pass

@setupmethod
def teardown_request(self, f):
	"""不管是否出现异常,注册一个每次请求结束时都会运行的函数。即使没有执行实际请求,也会在弹出请求上下文时执行这些函数,举例子:
	ctx = app.test_request_context()
	ctx.push()
	...
	ctx.pop()

	在上面的例子中,执行ctx.pop()时,在请求上下文从活动上下文栈中移除之前执行这些函数。当因为异常而调用teardown函数时,会传递eror对象。
	"""




@setupmethod
def template_filter(self, name=None):
	"""用来注册自定义模板过滤器的装饰器。若不指定过滤器的名字,则所装饰的函数名为过滤器名。举例子:
	@app.template_filter()
	def reverse(s):
	    return s[::-1]
	"""
	pass

 @setupmethod
 def template_global(self, name=None):
     """用来注册自定义模板全局函数的装饰器。若不指定全局函数名,则默认为所装饰的函数名。举例子:     
         @app.template_global()
         def double(n):
             return 2 * n
    """
     pass

@setupmethod
def template_test(self, name=None):
    """用来注册自定义模板测试的装饰器。若不指定模板测试的名称,则默认使用所装饰的函数名。举例子:
      @app.template_test()
      def is_prime(n):
          if n == 2:
              return True
          for i in range(2, int(math.ceil(math.sqrt(n))) + 1):
              if n % i == 0:
                  return False
          return True
    """
    pass

def test_cli_runner(self, **kwargs):
	"""创建一个用于CLI测试的CLI runner。 返回一个test_cli_runner_class实例。
	"""
	pass

def test_client(self, use_cookies=True, **kwargs):
	"""为此application创建测试客户端。
	"""
	pass

def trap_http_exception(self, e):
	"""检查是否应该捕获HTTP异常。
	"""
	pass

def update_template_context(self, context):
	"""使用一些常用变量更新模板上下文。将requst,session,config,g注入模板上下文。
	"""
	pass

@setupmethod
def url_defaults(self, f):
    """application所有视图函数的URL默认的回调函数
    """
    pass

@setupmethod
def url_value_preprocessor(self, f):
    """为application中的所有视图函数注册URL值预处理器函数,这些函数在befor_request()调用之前调用。
    """
    pass

def wsgi_app(self, environ, start_response):
	"""实际的WSGI应用。 这不是在__call __()中实现的,因此可以应用中间件而不会丢失对app对象的引用。举例子:
	app = MyMiddleware(app) # 不要这样使用
	app.wsgi_app = MyMiddleware(app.wsgi_app) # 应该这样使用

	"param environ: A WSGI environment.
    :param start_response: 接收状态码,headers的list,异常上下文参数的一个response可调用对象
	"""
	pass
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值