flask/docs/build/html/flask.html
2025-04-11 03:04:22 +00:00

3605 lines
444 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="./">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>flask package &mdash; Flask documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="flask.json package" href="flask.json.html" />
<link rel="prev" title="flask" href="modules.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home">
Flask
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contenido:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="modules.html">flask</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">flask package</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#subpackages">Subpackages</a><ul>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html">flask.json package</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#submodules">Submodules</a></li>
<li class="toctree-l3"><a class="reference internal" href="#module-flask.app">flask.app module</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#flask.app.Flask"><code class="docutils literal notranslate"><span class="pre">Flask</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#module-flask.blueprints">flask.blueprints module</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#flask.blueprints.Blueprint"><code class="docutils literal notranslate"><span class="pre">Blueprint</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#module-flask.cli">flask.cli module</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#flask.cli.AppGroup"><code class="docutils literal notranslate"><span class="pre">AppGroup</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.cli.CertParamType"><code class="docutils literal notranslate"><span class="pre">CertParamType</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.cli.FlaskGroup"><code class="docutils literal notranslate"><span class="pre">FlaskGroup</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.cli.NoAppException"><code class="docutils literal notranslate"><span class="pre">NoAppException</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.cli.ScriptInfo"><code class="docutils literal notranslate"><span class="pre">ScriptInfo</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.cli.SeparatedPathType"><code class="docutils literal notranslate"><span class="pre">SeparatedPathType</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.cli.find_app_by_string"><code class="docutils literal notranslate"><span class="pre">find_app_by_string()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.cli.find_best_app"><code class="docutils literal notranslate"><span class="pre">find_best_app()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.cli.get_version"><code class="docutils literal notranslate"><span class="pre">get_version()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.cli.load_dotenv"><code class="docutils literal notranslate"><span class="pre">load_dotenv()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.cli.locate_app"><code class="docutils literal notranslate"><span class="pre">locate_app()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.cli.main"><code class="docutils literal notranslate"><span class="pre">main()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.cli.prepare_import"><code class="docutils literal notranslate"><span class="pre">prepare_import()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.cli.show_server_banner"><code class="docutils literal notranslate"><span class="pre">show_server_banner()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.cli.with_appcontext"><code class="docutils literal notranslate"><span class="pre">with_appcontext()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#module-flask.config">flask.config module</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#flask.config.Config"><code class="docutils literal notranslate"><span class="pre">Config</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.config.ConfigAttribute"><code class="docutils literal notranslate"><span class="pre">ConfigAttribute</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#module-flask.ctx">flask.ctx module</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#flask.ctx.AppContext"><code class="docutils literal notranslate"><span class="pre">AppContext</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.ctx.RequestContext"><code class="docutils literal notranslate"><span class="pre">RequestContext</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.ctx.after_this_request"><code class="docutils literal notranslate"><span class="pre">after_this_request()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.ctx.copy_current_request_context"><code class="docutils literal notranslate"><span class="pre">copy_current_request_context()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.ctx.has_app_context"><code class="docutils literal notranslate"><span class="pre">has_app_context()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.ctx.has_request_context"><code class="docutils literal notranslate"><span class="pre">has_request_context()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#module-flask.debughelpers">flask.debughelpers module</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#flask.debughelpers.DebugFilesKeyError"><code class="docutils literal notranslate"><span class="pre">DebugFilesKeyError</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.debughelpers.FormDataRoutingRedirect"><code class="docutils literal notranslate"><span class="pre">FormDataRoutingRedirect</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.debughelpers.UnexpectedUnicodeError"><code class="docutils literal notranslate"><span class="pre">UnexpectedUnicodeError</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.debughelpers.explain_template_loading_attempts"><code class="docutils literal notranslate"><span class="pre">explain_template_loading_attempts()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#module-flask.globals">flask.globals module</a></li>
<li class="toctree-l3"><a class="reference internal" href="#module-flask.helpers">flask.helpers module</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#flask.helpers.abort"><code class="docutils literal notranslate"><span class="pre">abort()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.helpers.flash"><code class="docutils literal notranslate"><span class="pre">flash()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.helpers.get_debug_flag"><code class="docutils literal notranslate"><span class="pre">get_debug_flag()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.helpers.get_flashed_messages"><code class="docutils literal notranslate"><span class="pre">get_flashed_messages()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.helpers.get_load_dotenv"><code class="docutils literal notranslate"><span class="pre">get_load_dotenv()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.helpers.get_template_attribute"><code class="docutils literal notranslate"><span class="pre">get_template_attribute()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.helpers.make_response"><code class="docutils literal notranslate"><span class="pre">make_response()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.helpers.redirect"><code class="docutils literal notranslate"><span class="pre">redirect()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.helpers.send_file"><code class="docutils literal notranslate"><span class="pre">send_file()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.helpers.send_from_directory"><code class="docutils literal notranslate"><span class="pre">send_from_directory()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.helpers.stream_with_context"><code class="docutils literal notranslate"><span class="pre">stream_with_context()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.helpers.url_for"><code class="docutils literal notranslate"><span class="pre">url_for()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#module-flask.logging">flask.logging module</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#flask.logging.create_logger"><code class="docutils literal notranslate"><span class="pre">create_logger()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.logging.default_handler"><code class="docutils literal notranslate"><span class="pre">default_handler</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.logging.has_level_handler"><code class="docutils literal notranslate"><span class="pre">has_level_handler()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#module-flask.sessions">flask.sessions module</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#flask.sessions.NullSession"><code class="docutils literal notranslate"><span class="pre">NullSession</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.sessions.SecureCookieSession"><code class="docutils literal notranslate"><span class="pre">SecureCookieSession</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.sessions.SecureCookieSessionInterface"><code class="docutils literal notranslate"><span class="pre">SecureCookieSessionInterface</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.sessions.SessionInterface"><code class="docutils literal notranslate"><span class="pre">SessionInterface</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.sessions.SessionMixin"><code class="docutils literal notranslate"><span class="pre">SessionMixin</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#module-flask.signals">flask.signals module</a></li>
<li class="toctree-l3"><a class="reference internal" href="#module-flask.templating">flask.templating module</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#flask.templating.DispatchingJinjaLoader"><code class="docutils literal notranslate"><span class="pre">DispatchingJinjaLoader</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.templating.Environment"><code class="docutils literal notranslate"><span class="pre">Environment</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.templating.render_template"><code class="docutils literal notranslate"><span class="pre">render_template()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.templating.render_template_string"><code class="docutils literal notranslate"><span class="pre">render_template_string()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.templating.stream_template"><code class="docutils literal notranslate"><span class="pre">stream_template()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.templating.stream_template_string"><code class="docutils literal notranslate"><span class="pre">stream_template_string()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#module-flask.testing">flask.testing module</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#flask.testing.EnvironBuilder"><code class="docutils literal notranslate"><span class="pre">EnvironBuilder</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.testing.FlaskCliRunner"><code class="docutils literal notranslate"><span class="pre">FlaskCliRunner</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.testing.FlaskClient"><code class="docutils literal notranslate"><span class="pre">FlaskClient</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#module-flask.typing">flask.typing module</a></li>
<li class="toctree-l3"><a class="reference internal" href="#module-flask.views">flask.views module</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#flask.views.MethodView"><code class="docutils literal notranslate"><span class="pre">MethodView</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.views.View"><code class="docutils literal notranslate"><span class="pre">View</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#module-flask.wrappers">flask.wrappers module</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#flask.wrappers.Request"><code class="docutils literal notranslate"><span class="pre">Request</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#flask.wrappers.Response"><code class="docutils literal notranslate"><span class="pre">Response</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#module-flask">Module contents</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Flask</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="modules.html">flask</a></li>
<li class="breadcrumb-item active">flask package</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/flask.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="flask-package">
<h1>flask package<a class="headerlink" href="#flask-package" title="Link to this heading"></a></h1>
<section id="subpackages">
<h2>Subpackages<a class="headerlink" href="#subpackages" title="Link to this heading"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="flask.json.html">flask.json package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="flask.json.html#submodules">Submodules</a></li>
<li class="toctree-l2"><a class="reference internal" href="flask.json.html#module-flask.json.provider">flask.json.provider module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="flask.json.html#flask.json.provider.DefaultJSONProvider"><code class="docutils literal notranslate"><span class="pre">DefaultJSONProvider</span></code></a><ul>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.provider.DefaultJSONProvider.compact"><code class="docutils literal notranslate"><span class="pre">DefaultJSONProvider.compact</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.provider.DefaultJSONProvider.default"><code class="docutils literal notranslate"><span class="pre">DefaultJSONProvider.default()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.provider.DefaultJSONProvider.dumps"><code class="docutils literal notranslate"><span class="pre">DefaultJSONProvider.dumps()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.provider.DefaultJSONProvider.ensure_ascii"><code class="docutils literal notranslate"><span class="pre">DefaultJSONProvider.ensure_ascii</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.provider.DefaultJSONProvider.loads"><code class="docutils literal notranslate"><span class="pre">DefaultJSONProvider.loads()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.provider.DefaultJSONProvider.mimetype"><code class="docutils literal notranslate"><span class="pre">DefaultJSONProvider.mimetype</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.provider.DefaultJSONProvider.response"><code class="docutils literal notranslate"><span class="pre">DefaultJSONProvider.response()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.provider.DefaultJSONProvider.sort_keys"><code class="docutils literal notranslate"><span class="pre">DefaultJSONProvider.sort_keys</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="flask.json.html#flask.json.provider.JSONProvider"><code class="docutils literal notranslate"><span class="pre">JSONProvider</span></code></a><ul>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.provider.JSONProvider.dump"><code class="docutils literal notranslate"><span class="pre">JSONProvider.dump()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.provider.JSONProvider.dumps"><code class="docutils literal notranslate"><span class="pre">JSONProvider.dumps()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.provider.JSONProvider.load"><code class="docutils literal notranslate"><span class="pre">JSONProvider.load()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.provider.JSONProvider.loads"><code class="docutils literal notranslate"><span class="pre">JSONProvider.loads()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.provider.JSONProvider.response"><code class="docutils literal notranslate"><span class="pre">JSONProvider.response()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="flask.json.html#module-flask.json.tag">flask.json.tag module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="flask.json.html#tagged-json">Tagged JSON</a><ul>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TaggedJSONSerializer"><code class="docutils literal notranslate"><span class="pre">TaggedJSONSerializer</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.JSONTag"><code class="docutils literal notranslate"><span class="pre">JSONTag</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="flask.json.html#id0"><code class="docutils literal notranslate"><span class="pre">JSONTag</span></code></a><ul>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#id1"><code class="docutils literal notranslate"><span class="pre">JSONTag.check()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#id2"><code class="docutils literal notranslate"><span class="pre">JSONTag.key</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.JSONTag.serializer"><code class="docutils literal notranslate"><span class="pre">JSONTag.serializer</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#id3"><code class="docutils literal notranslate"><span class="pre">JSONTag.tag()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#id4"><code class="docutils literal notranslate"><span class="pre">JSONTag.to_json()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#id5"><code class="docutils literal notranslate"><span class="pre">JSONTag.to_python()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="flask.json.html#flask.json.tag.PassDict"><code class="docutils literal notranslate"><span class="pre">PassDict</span></code></a><ul>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.PassDict.check"><code class="docutils literal notranslate"><span class="pre">PassDict.check()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.PassDict.tag"><code class="docutils literal notranslate"><span class="pre">PassDict.tag()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.PassDict.to_json"><code class="docutils literal notranslate"><span class="pre">PassDict.to_json()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="flask.json.html#flask.json.tag.PassList"><code class="docutils literal notranslate"><span class="pre">PassList</span></code></a><ul>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.PassList.check"><code class="docutils literal notranslate"><span class="pre">PassList.check()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.PassList.tag"><code class="docutils literal notranslate"><span class="pre">PassList.tag()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.PassList.to_json"><code class="docutils literal notranslate"><span class="pre">PassList.to_json()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="flask.json.html#flask.json.tag.TagBytes"><code class="docutils literal notranslate"><span class="pre">TagBytes</span></code></a><ul>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagBytes.check"><code class="docutils literal notranslate"><span class="pre">TagBytes.check()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagBytes.key"><code class="docutils literal notranslate"><span class="pre">TagBytes.key</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagBytes.to_json"><code class="docutils literal notranslate"><span class="pre">TagBytes.to_json()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagBytes.to_python"><code class="docutils literal notranslate"><span class="pre">TagBytes.to_python()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="flask.json.html#flask.json.tag.TagDateTime"><code class="docutils literal notranslate"><span class="pre">TagDateTime</span></code></a><ul>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagDateTime.check"><code class="docutils literal notranslate"><span class="pre">TagDateTime.check()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagDateTime.key"><code class="docutils literal notranslate"><span class="pre">TagDateTime.key</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagDateTime.to_json"><code class="docutils literal notranslate"><span class="pre">TagDateTime.to_json()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagDateTime.to_python"><code class="docutils literal notranslate"><span class="pre">TagDateTime.to_python()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="flask.json.html#flask.json.tag.TagDict"><code class="docutils literal notranslate"><span class="pre">TagDict</span></code></a><ul>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagDict.check"><code class="docutils literal notranslate"><span class="pre">TagDict.check()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagDict.key"><code class="docutils literal notranslate"><span class="pre">TagDict.key</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagDict.to_json"><code class="docutils literal notranslate"><span class="pre">TagDict.to_json()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagDict.to_python"><code class="docutils literal notranslate"><span class="pre">TagDict.to_python()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="flask.json.html#flask.json.tag.TagMarkup"><code class="docutils literal notranslate"><span class="pre">TagMarkup</span></code></a><ul>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagMarkup.check"><code class="docutils literal notranslate"><span class="pre">TagMarkup.check()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagMarkup.key"><code class="docutils literal notranslate"><span class="pre">TagMarkup.key</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagMarkup.to_json"><code class="docutils literal notranslate"><span class="pre">TagMarkup.to_json()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagMarkup.to_python"><code class="docutils literal notranslate"><span class="pre">TagMarkup.to_python()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="flask.json.html#flask.json.tag.TagTuple"><code class="docutils literal notranslate"><span class="pre">TagTuple</span></code></a><ul>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagTuple.check"><code class="docutils literal notranslate"><span class="pre">TagTuple.check()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagTuple.key"><code class="docutils literal notranslate"><span class="pre">TagTuple.key</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagTuple.to_json"><code class="docutils literal notranslate"><span class="pre">TagTuple.to_json()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagTuple.to_python"><code class="docutils literal notranslate"><span class="pre">TagTuple.to_python()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="flask.json.html#flask.json.tag.TagUUID"><code class="docutils literal notranslate"><span class="pre">TagUUID</span></code></a><ul>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagUUID.check"><code class="docutils literal notranslate"><span class="pre">TagUUID.check()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagUUID.key"><code class="docutils literal notranslate"><span class="pre">TagUUID.key</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagUUID.to_json"><code class="docutils literal notranslate"><span class="pre">TagUUID.to_json()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TagUUID.to_python"><code class="docutils literal notranslate"><span class="pre">TagUUID.to_python()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="flask.json.html#id6"><code class="docutils literal notranslate"><span class="pre">TaggedJSONSerializer</span></code></a><ul>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#id7"><code class="docutils literal notranslate"><span class="pre">TaggedJSONSerializer.default_tags</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#id8"><code class="docutils literal notranslate"><span class="pre">TaggedJSONSerializer.dumps()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#id9"><code class="docutils literal notranslate"><span class="pre">TaggedJSONSerializer.loads()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TaggedJSONSerializer.order"><code class="docutils literal notranslate"><span class="pre">TaggedJSONSerializer.order</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#id10"><code class="docutils literal notranslate"><span class="pre">TaggedJSONSerializer.register()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#id11"><code class="docutils literal notranslate"><span class="pre">TaggedJSONSerializer.tag()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#flask.json.tag.TaggedJSONSerializer.tags"><code class="docutils literal notranslate"><span class="pre">TaggedJSONSerializer.tags</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="flask.json.html#id12"><code class="docutils literal notranslate"><span class="pre">TaggedJSONSerializer.untag()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="flask.json.html#module-flask.json">Module contents</a><ul>
<li class="toctree-l3"><a class="reference internal" href="flask.json.html#flask.json.dump"><code class="docutils literal notranslate"><span class="pre">dump()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="flask.json.html#flask.json.dumps"><code class="docutils literal notranslate"><span class="pre">dumps()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="flask.json.html#flask.json.jsonify"><code class="docutils literal notranslate"><span class="pre">jsonify()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="flask.json.html#flask.json.load"><code class="docutils literal notranslate"><span class="pre">load()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="flask.json.html#flask.json.loads"><code class="docutils literal notranslate"><span class="pre">loads()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</section>
<section id="submodules">
<h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading"></a></h2>
</section>
<section id="module-flask.app">
<span id="flask-app-module"></span><h2>flask.app module<a class="headerlink" href="#module-flask.app" title="Link to this heading"></a></h2>
<dl class="py class">
<dt class="sig sig-object py" id="flask.app.Flask">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.app.</span></span><span class="sig-name descname"><span class="pre">Flask</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">import_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">static_url_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">static_folder</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">PathLike</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'static'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">static_host</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">host_matching</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">subdomain_matching</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">template_folder</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">PathLike</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'templates'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">instance_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">instance_relative_config</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">root_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.app.Flask" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">App</span></code></p>
<p>The flask object implements a WSGI application and acts as the central
object. It is passed the name of the module or package of the
application. Once it is created it will act as a central registry for
the view functions, the URL rules, template configuration and much more.</p>
<p>The name of the package is used to resolve resources from inside the
package or the folder the module is contained in depending on if the
package parameter resolves to an actual python package (a folder with
an <code class="file docutils literal notranslate"><span class="pre">__init__.py</span></code> file inside) or a standard module (just a <code class="docutils literal notranslate"><span class="pre">.py</span></code> file).</p>
<p>For more information about resource loading, see <a class="reference internal" href="#flask.app.Flask.open_resource" title="flask.app.Flask.open_resource"><code class="xref py py-func docutils literal notranslate"><span class="pre">open_resource()</span></code></a>.</p>
<p>Usually you create a <a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><code class="xref py py-class docutils literal notranslate"><span class="pre">Flask</span></code></a> instance in your main module or
in the <code class="file docutils literal notranslate"><span class="pre">__init__.py</span></code> file of your package like this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">flask</span><span class="w"> </span><span class="kn">import</span> <span class="n">Flask</span>
<span class="n">app</span> <span class="o">=</span> <span class="n">Flask</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
</pre></div>
</div>
<div class="admonition-about-the-first-parameter admonition">
<p class="admonition-title">About the First Parameter</p>
<p>The idea of the first parameter is to give Flask an idea of what
belongs to your application. This name is used to find resources
on the filesystem, can be used by extensions to improve debugging
information and a lot more.</p>
<p>So its important what you provide there. If you are using a single
module, <cite>__name__</cite> is always the correct value. If you however are
using a package, its usually recommended to hardcode the name of
your package there.</p>
<p>For example if your application is defined in <code class="file docutils literal notranslate"><span class="pre">yourapplication/app.py</span></code>
you should create it with one of the two versions below:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">app</span> <span class="o">=</span> <span class="n">Flask</span><span class="p">(</span><span class="s1">&#39;yourapplication&#39;</span><span class="p">)</span>
<span class="n">app</span> <span class="o">=</span> <span class="n">Flask</span><span class="p">(</span><span class="vm">__name__</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
</pre></div>
</div>
<p>Why is that? The application will work even with <cite>__name__</cite>, thanks
to how resources are looked up. However it will make debugging more
painful. Certain extensions can make assumptions based on the
import name of your application. For example the Flask-SQLAlchemy
extension will look for the code in your application that triggered
an SQL query in debug mode. If the import name is not properly set
up, that debugging information is lost. (For example it would only
pick up SQL queries in <cite>yourapplication.app</cite> and not
<cite>yourapplication.views.frontend</cite>)</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.7: </span>The <cite>static_url_path</cite>, <cite>static_folder</cite>, and <cite>template_folder</cite>
parameters were added.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.8: </span>The <cite>instance_path</cite> and <cite>instance_relative_config</cite> parameters were
added.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.11: </span>The <cite>root_path</cite> parameter was added.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 1.0: </span>The <code class="docutils literal notranslate"><span class="pre">host_matching</span></code> and <code class="docutils literal notranslate"><span class="pre">static_host</span></code> parameters were added.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 1.0: </span>The <code class="docutils literal notranslate"><span class="pre">subdomain_matching</span></code> parameter was added. Subdomain
matching needs to be enabled manually now. Setting
<code class="xref py py-data docutils literal notranslate"><span class="pre">SERVER_NAME</span></code> does not implicitly enable it.</p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>import_name</strong> the name of the application package</p></li>
<li><p><strong>static_url_path</strong> can be used to specify a different path for the
static files on the web. Defaults to the name
of the <cite>static_folder</cite> folder.</p></li>
<li><p><strong>static_folder</strong> The folder with static files that is served at
<code class="docutils literal notranslate"><span class="pre">static_url_path</span></code>. Relative to the application <code class="docutils literal notranslate"><span class="pre">root_path</span></code>
or an absolute path. Defaults to <code class="docutils literal notranslate"><span class="pre">'static'</span></code>.</p></li>
<li><p><strong>static_host</strong> the host to use when adding the static route.
Defaults to None. Required when using <code class="docutils literal notranslate"><span class="pre">host_matching=True</span></code>
with a <code class="docutils literal notranslate"><span class="pre">static_folder</span></code> configured.</p></li>
<li><p><strong>host_matching</strong> set <code class="docutils literal notranslate"><span class="pre">url_map.host_matching</span></code> attribute.
Defaults to False.</p></li>
<li><p><strong>subdomain_matching</strong> consider the subdomain relative to
<code class="xref py py-data docutils literal notranslate"><span class="pre">SERVER_NAME</span></code> when matching routes. Defaults to False.</p></li>
<li><p><strong>template_folder</strong> the folder that contains the templates that should
be used by the application. Defaults to
<code class="docutils literal notranslate"><span class="pre">'templates'</span></code> folder in the root path of the
application.</p></li>
<li><p><strong>instance_path</strong> An alternative instance path for the application.
By default the folder <code class="docutils literal notranslate"><span class="pre">'instance'</span></code> next to the
package or module is assumed to be the instance
path.</p></li>
<li><p><strong>instance_relative_config</strong> if set to <code class="docutils literal notranslate"><span class="pre">True</span></code> relative filenames
for loading the config are assumed to
be relative to the instance path instead
of the application root.</p></li>
<li><p><strong>root_path</strong> The path to the root of the application files.
This should only be set manually when it cant be detected
automatically, such as for namespace packages.</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.app_context">
<span class="sig-name descname"><span class="pre">app_context</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.ctx.AppContext" title="flask.ctx.AppContext"><span class="pre">AppContext</span></a></span></span><a class="headerlink" href="#flask.app.Flask.app_context" title="Link to this definition"></a></dt>
<dd><p>Create an <a class="reference internal" href="#flask.ctx.AppContext" title="flask.ctx.AppContext"><code class="xref py py-class docutils literal notranslate"><span class="pre">AppContext</span></code></a>. Use as a <code class="docutils literal notranslate"><span class="pre">with</span></code>
block to push the context, which will make <code class="xref py py-data docutils literal notranslate"><span class="pre">current_app</span></code>
point at this application.</p>
<p>An application context is automatically pushed by
<a class="reference internal" href="#flask.ctx.RequestContext.push" title="flask.ctx.RequestContext.push"><code class="xref py py-meth docutils literal notranslate"><span class="pre">RequestContext.push()</span></code></a>
when handling a request, and when running a CLI command. Use
this to manually create a context outside of these situations.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">with</span> <span class="n">app</span><span class="o">.</span><span class="n">app_context</span><span class="p">():</span>
<span class="n">init_db</span><span class="p">()</span>
</pre></div>
</div>
<p>See <span class="xref std std-doc">/appcontext</span>.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.9.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.async_to_sync">
<span class="sig-name descname"><span class="pre">async_to_sync</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Coroutine</span><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#flask.app.Flask.async_to_sync" title="Link to this definition"></a></dt>
<dd><p>Return a sync function that will run the coroutine function.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">result</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">async_to_sync</span><span class="p">(</span><span class="n">func</span><span class="p">)(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</pre></div>
</div>
<p>Override this method to change how the app converts async code
to be synchronously callable.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 2.0.</span></p>
</div>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.app.Flask.cli">
<span class="sig-name descname"><span class="pre">cli</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Group</span></em><a class="headerlink" href="#flask.app.Flask.cli" title="Link to this definition"></a></dt>
<dd><p>The Click command group for registering CLI commands for this
object. The commands are available from the <code class="docutils literal notranslate"><span class="pre">flask</span></code> command
once the application has been discovered and blueprints have
been registered.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.create_jinja_environment">
<span class="sig-name descname"><span class="pre">create_jinja_environment</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.templating.Environment" title="flask.templating.Environment"><span class="pre">Environment</span></a></span></span><a class="headerlink" href="#flask.app.Flask.create_jinja_environment" title="Link to this definition"></a></dt>
<dd><p>Create the Jinja environment based on <code class="xref py py-attr docutils literal notranslate"><span class="pre">jinja_options</span></code>
and the various Jinja-related methods of the app. Changing
<code class="xref py py-attr docutils literal notranslate"><span class="pre">jinja_options</span></code> after this will have no effect. Also adds
Flask-related globals and filters to the environment.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.11: </span><code class="docutils literal notranslate"><span class="pre">Environment.auto_reload</span></code> set in accordance with
<code class="docutils literal notranslate"><span class="pre">TEMPLATES_AUTO_RELOAD</span></code> configuration option.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.5.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.create_url_adapter">
<span class="sig-name descname"><span class="pre">create_url_adapter</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.wrappers.Request" title="flask.wrappers.Request"><span class="pre">Request</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">MapAdapter</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="headerlink" href="#flask.app.Flask.create_url_adapter" title="Link to this definition"></a></dt>
<dd><p>Creates a URL adapter for the given request. The URL adapter
is created at a point where the request context is not yet set
up so the request is passed explicitly.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 3.1: </span>If <code class="xref py py-data docutils literal notranslate"><span class="pre">SERVER_NAME</span></code> is set, it does not restrict requests to
only that domain, for both <code class="docutils literal notranslate"><span class="pre">subdomain_matching</span></code> and
<code class="docutils literal notranslate"><span class="pre">host_matching</span></code>.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 1.0: </span><code class="xref py py-data docutils literal notranslate"><span class="pre">SERVER_NAME</span></code> no longer implicitly enables subdomain
matching. Use <code class="xref py py-attr docutils literal notranslate"><span class="pre">subdomain_matching</span></code> instead.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.9: </span>This can be called outside a request when the URL adapter is created
for an application context.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.6.</span></p>
</div>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.app.Flask.default_config">
<span class="sig-name descname"><span class="pre">default_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">t.Any</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{'APPLICATION_ROOT':</span> <span class="pre">'/',</span> <span class="pre">'DEBUG':</span> <span class="pre">None,</span> <span class="pre">'EXPLAIN_TEMPLATE_LOADING':</span> <span class="pre">False,</span> <span class="pre">'MAX_CONTENT_LENGTH':</span> <span class="pre">None,</span> <span class="pre">'MAX_COOKIE_SIZE':</span> <span class="pre">4093,</span> <span class="pre">'MAX_FORM_MEMORY_SIZE':</span> <span class="pre">500000,</span> <span class="pre">'MAX_FORM_PARTS':</span> <span class="pre">1000,</span> <span class="pre">'PERMANENT_SESSION_LIFETIME':</span> <span class="pre">datetime.timedelta(days=31),</span> <span class="pre">'PREFERRED_URL_SCHEME':</span> <span class="pre">'http',</span> <span class="pre">'PROPAGATE_EXCEPTIONS':</span> <span class="pre">None,</span> <span class="pre">'PROVIDE_AUTOMATIC_OPTIONS':</span> <span class="pre">True,</span> <span class="pre">'SECRET_KEY':</span> <span class="pre">None,</span> <span class="pre">'SECRET_KEY_FALLBACKS':</span> <span class="pre">None,</span> <span class="pre">'SEND_FILE_MAX_AGE_DEFAULT':</span> <span class="pre">None,</span> <span class="pre">'SERVER_NAME':</span> <span class="pre">None,</span> <span class="pre">'SESSION_COOKIE_DOMAIN':</span> <span class="pre">None,</span> <span class="pre">'SESSION_COOKIE_HTTPONLY':</span> <span class="pre">True,</span> <span class="pre">'SESSION_COOKIE_NAME':</span> <span class="pre">'session',</span> <span class="pre">'SESSION_COOKIE_PARTITIONED':</span> <span class="pre">False,</span> <span class="pre">'SESSION_COOKIE_PATH':</span> <span class="pre">None,</span> <span class="pre">'SESSION_COOKIE_SAMESITE':</span> <span class="pre">None,</span> <span class="pre">'SESSION_COOKIE_SECURE':</span> <span class="pre">False,</span> <span class="pre">'SESSION_REFRESH_EACH_REQUEST':</span> <span class="pre">True,</span> <span class="pre">'TEMPLATES_AUTO_RELOAD':</span> <span class="pre">None,</span> <span class="pre">'TESTING':</span> <span class="pre">False,</span> <span class="pre">'TRAP_BAD_REQUEST_ERRORS':</span> <span class="pre">None,</span> <span class="pre">'TRAP_HTTP_EXCEPTIONS':</span> <span class="pre">False,</span> <span class="pre">'TRUSTED_HOSTS':</span> <span class="pre">None,</span> <span class="pre">'USE_X_SENDFILE':</span> <span class="pre">False}</span></em><a class="headerlink" href="#flask.app.Flask.default_config" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.dispatch_request">
<span class="sig-name descname"><span class="pre">dispatch_request</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">ft.ResponseReturnValue</span></span></span><a class="headerlink" href="#flask.app.Flask.dispatch_request" title="Link to this definition"></a></dt>
<dd><p>Does the request dispatching. Matches the URL and returns the
return value of the view or error handler. This does not have to
be a response object. In order to convert the return value to a
proper response object, call <a class="reference internal" href="#flask.app.Flask.make_response" title="flask.app.Flask.make_response"><code class="xref py py-func docutils literal notranslate"><span class="pre">make_response()</span></code></a>.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.7: </span>This no longer does the exception handling, this code was
moved to the new <a class="reference internal" href="#flask.app.Flask.full_dispatch_request" title="flask.app.Flask.full_dispatch_request"><code class="xref py py-meth docutils literal notranslate"><span class="pre">full_dispatch_request()</span></code></a>.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.do_teardown_appcontext">
<span class="sig-name descname"><span class="pre">do_teardown_appcontext</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">exc:</span> <span class="pre">BaseException</span> <span class="pre">|</span> <span class="pre">None</span> <span class="pre">=</span> <span class="pre">&lt;object</span> <span class="pre">object&gt;</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#flask.app.Flask.do_teardown_appcontext" title="Link to this definition"></a></dt>
<dd><p>Called right before the application context is popped.</p>
<p>When handling a request, the application context is popped
after the request context. See <a class="reference internal" href="#flask.app.Flask.do_teardown_request" title="flask.app.Flask.do_teardown_request"><code class="xref py py-meth docutils literal notranslate"><span class="pre">do_teardown_request()</span></code></a>.</p>
<p>This calls all functions decorated with
<code class="xref py py-meth docutils literal notranslate"><span class="pre">teardown_appcontext()</span></code>. Then the
<code class="xref py py-data docutils literal notranslate"><span class="pre">appcontext_tearing_down</span></code> signal is sent.</p>
<p>This is called by
<a class="reference internal" href="#flask.ctx.AppContext.pop" title="flask.ctx.AppContext.pop"><code class="xref py py-meth docutils literal notranslate"><span class="pre">AppContext.pop()</span></code></a>.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.9.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.do_teardown_request">
<span class="sig-name descname"><span class="pre">do_teardown_request</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">exc:</span> <span class="pre">BaseException</span> <span class="pre">|</span> <span class="pre">None</span> <span class="pre">=</span> <span class="pre">&lt;object</span> <span class="pre">object&gt;</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#flask.app.Flask.do_teardown_request" title="Link to this definition"></a></dt>
<dd><p>Called after the request is dispatched and the response is
returned, right before the request context is popped.</p>
<p>This calls all functions decorated with
<code class="xref py py-meth docutils literal notranslate"><span class="pre">teardown_request()</span></code>, and <code class="xref py py-meth docutils literal notranslate"><span class="pre">Blueprint.teardown_request()</span></code>
if a blueprint handled the request. Finally, the
<code class="xref py py-data docutils literal notranslate"><span class="pre">request_tearing_down</span></code> signal is sent.</p>
<p>This is called by
<a class="reference internal" href="#flask.ctx.RequestContext.pop" title="flask.ctx.RequestContext.pop"><code class="xref py py-meth docutils literal notranslate"><span class="pre">RequestContext.pop()</span></code></a>,
which may be delayed during testing to maintain access to
resources.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>exc</strong> An unhandled exception raised while dispatching the
request. Detected from the current exception information if
not passed. Passed to each teardown function.</p>
</dd>
</dl>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.9: </span>Added the <code class="docutils literal notranslate"><span class="pre">exc</span></code> argument.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.ensure_sync">
<span class="sig-name descname"><span class="pre">ensure_sync</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#flask.app.Flask.ensure_sync" title="Link to this definition"></a></dt>
<dd><p>Ensure that the function is synchronous for WSGI workers.
Plain <code class="docutils literal notranslate"><span class="pre">def</span></code> functions are returned as-is. <code class="docutils literal notranslate"><span class="pre">async</span> <span class="pre">def</span></code>
functions are wrapped to run and wait for the response.</p>
<p>Override this method to change how the app runs async views.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 2.0.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.finalize_request">
<span class="sig-name descname"><span class="pre">finalize_request</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rv</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">ft.ResponseReturnValue</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">HTTPException</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">from_error_handler</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.wrappers.Response" title="flask.wrappers.Response"><span class="pre">Response</span></a></span></span><a class="headerlink" href="#flask.app.Flask.finalize_request" title="Link to this definition"></a></dt>
<dd><p>Given the return value from a view function this finalizes
the request by converting it into a response and invoking the
postprocessing functions. This is invoked for both normal
request dispatching as well as error handlers.</p>
<p>Because this means that it might be called as a result of a
failure a special safe mode is available which can be enabled
with the <cite>from_error_handler</cite> flag. If enabled, failures in
response processing will be logged and otherwise ignored.</p>
<dl class="field-list simple">
<dt class="field-odd">Internal<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.full_dispatch_request">
<span class="sig-name descname"><span class="pre">full_dispatch_request</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.wrappers.Response" title="flask.wrappers.Response"><span class="pre">Response</span></a></span></span><a class="headerlink" href="#flask.app.Flask.full_dispatch_request" title="Link to this definition"></a></dt>
<dd><p>Dispatches the request and on top of that performs request
pre and postprocessing as well as HTTP exception catching and
error handling.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.7.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.get_send_file_max_age">
<span class="sig-name descname"><span class="pre">get_send_file_max_age</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="headerlink" href="#flask.app.Flask.get_send_file_max_age" title="Link to this definition"></a></dt>
<dd><p>Used by <code class="xref py py-func docutils literal notranslate"><span class="pre">send_file()</span></code> to determine the <code class="docutils literal notranslate"><span class="pre">max_age</span></code> cache
value for a given file path if it wasnt passed.</p>
<p>By default, this returns <code class="xref py py-data docutils literal notranslate"><span class="pre">SEND_FILE_MAX_AGE_DEFAULT</span></code> from
the configuration of <code class="xref py py-data docutils literal notranslate"><span class="pre">current_app</span></code>. This defaults
to <code class="docutils literal notranslate"><span class="pre">None</span></code>, which tells the browser to use conditional requests
instead of a timed cache, which is usually preferable.</p>
<p>Note this is a duplicate of the same method in the Flask
class.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.0: </span>The default configuration is <code class="docutils literal notranslate"><span class="pre">None</span></code> instead of 12 hours.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.9.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.handle_exception">
<span class="sig-name descname"><span class="pre">handle_exception</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">e</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Exception</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.wrappers.Response" title="flask.wrappers.Response"><span class="pre">Response</span></a></span></span><a class="headerlink" href="#flask.app.Flask.handle_exception" title="Link to this definition"></a></dt>
<dd><p>Handle an exception that did not have an error handler
associated with it, or that was raised from an error handler.
This always causes a 500 <code class="docutils literal notranslate"><span class="pre">InternalServerError</span></code>.</p>
<p>Always sends the <code class="xref py py-data docutils literal notranslate"><span class="pre">got_request_exception</span></code> signal.</p>
<p>If <code class="xref py py-data docutils literal notranslate"><span class="pre">PROPAGATE_EXCEPTIONS</span></code> is <code class="docutils literal notranslate"><span class="pre">True</span></code>, such as in debug
mode, the error will be re-raised so that the debugger can
display it. Otherwise, the original exception is logged, and
an <code class="xref py py-exc docutils literal notranslate"><span class="pre">InternalServerError</span></code> is returned.</p>
<p>If an error handler is registered for <code class="docutils literal notranslate"><span class="pre">InternalServerError</span></code> or
<code class="docutils literal notranslate"><span class="pre">500</span></code>, it will be used. For consistency, the handler will
always receive the <code class="docutils literal notranslate"><span class="pre">InternalServerError</span></code>. The original
unhandled exception is available as <code class="docutils literal notranslate"><span class="pre">e.original_exception</span></code>.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 1.1.0: </span>Always passes the <code class="docutils literal notranslate"><span class="pre">InternalServerError</span></code> instance to the
handler, setting <code class="docutils literal notranslate"><span class="pre">original_exception</span></code> to the unhandled
error.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 1.1.0: </span><code class="docutils literal notranslate"><span class="pre">after_request</span></code> functions and other finalization is done
even for the default 500 response when there is no handler.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.3.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.handle_http_exception">
<span class="sig-name descname"><span class="pre">handle_http_exception</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">e</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">HTTPException</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">HTTPException</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">ft.ResponseReturnValue</span></span></span><a class="headerlink" href="#flask.app.Flask.handle_http_exception" title="Link to this definition"></a></dt>
<dd><p>Handles an HTTP exception. By default this will invoke the
registered error handlers and fall back to returning the
exception as response.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 1.0.3: </span><code class="docutils literal notranslate"><span class="pre">RoutingException</span></code>, used internally for actions such as
slash redirects during routing, is not passed to error
handlers.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 1.0: </span>Exceptions are looked up by code <em>and</em> by MRO, so
<code class="docutils literal notranslate"><span class="pre">HTTPException</span></code> subclasses can be handled with a catch-all
handler for the base <code class="docutils literal notranslate"><span class="pre">HTTPException</span></code>.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.3.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.handle_user_exception">
<span class="sig-name descname"><span class="pre">handle_user_exception</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">e</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Exception</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">HTTPException</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">ft.ResponseReturnValue</span></span></span><a class="headerlink" href="#flask.app.Flask.handle_user_exception" title="Link to this definition"></a></dt>
<dd><p>This method is called whenever an exception occurs that
should be handled. A special case is <code class="xref py py-class docutils literal notranslate"><span class="pre">HTTPException</span></code> which is forwarded to the
<a class="reference internal" href="#flask.app.Flask.handle_http_exception" title="flask.app.Flask.handle_http_exception"><code class="xref py py-meth docutils literal notranslate"><span class="pre">handle_http_exception()</span></code></a> method. This function will either
return a response value or reraise the exception with the same
traceback.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 1.0: </span>Key errors raised from request data like <code class="docutils literal notranslate"><span class="pre">form</span></code> show the
bad key in debug mode rather than a generic bad request
message.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.7.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.log_exception">
<span class="sig-name descname"><span class="pre">log_exception</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">exc_info</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">type</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">BaseException</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">TracebackType</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">None</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#flask.app.Flask.log_exception" title="Link to this definition"></a></dt>
<dd><p>Logs an exception. This is called by <a class="reference internal" href="#flask.app.Flask.handle_exception" title="flask.app.Flask.handle_exception"><code class="xref py py-meth docutils literal notranslate"><span class="pre">handle_exception()</span></code></a>
if debugging is disabled and right before the handler is called.
The default implementation logs the exception as error on the
<code class="xref py py-attr docutils literal notranslate"><span class="pre">logger</span></code>.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.8.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.make_default_options_response">
<span class="sig-name descname"><span class="pre">make_default_options_response</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.wrappers.Response" title="flask.wrappers.Response"><span class="pre">Response</span></a></span></span><a class="headerlink" href="#flask.app.Flask.make_default_options_response" title="Link to this definition"></a></dt>
<dd><p>This method is called to create the default <code class="docutils literal notranslate"><span class="pre">OPTIONS</span></code> response.
This can be changed through subclassing to change the default
behavior of <code class="docutils literal notranslate"><span class="pre">OPTIONS</span></code> responses.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.7.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.make_response">
<span class="sig-name descname"><span class="pre">make_response</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rv</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">ft.ResponseReturnValue</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.wrappers.Response" title="flask.wrappers.Response"><span class="pre">Response</span></a></span></span><a class="headerlink" href="#flask.app.Flask.make_response" title="Link to this definition"></a></dt>
<dd><p>Convert the return value from a view function to an instance of
<a class="reference internal" href="#flask.app.Flask.response_class" title="flask.app.Flask.response_class"><code class="xref py py-attr docutils literal notranslate"><span class="pre">response_class</span></code></a>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>rv</strong> <p>the return value from the view function. The view function
must return a response. Returning <code class="docutils literal notranslate"><span class="pre">None</span></code>, or the view ending
without returning, is not allowed. The following types are allowed
for <code class="docutils literal notranslate"><span class="pre">view_rv</span></code>:</p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">str</span></code></dt><dd><p>A response object is created with the string encoded to UTF-8
as the body.</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">bytes</span></code></dt><dd><p>A response object is created with the bytes as the body.</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">dict</span></code></dt><dd><p>A dictionary that will be jsonifyd before being returned.</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">list</span></code></dt><dd><p>A list that will be jsonifyd before being returned.</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">generator</span></code> or <code class="docutils literal notranslate"><span class="pre">iterator</span></code></dt><dd><p>A generator that returns <code class="docutils literal notranslate"><span class="pre">str</span></code> or <code class="docutils literal notranslate"><span class="pre">bytes</span></code> to be
streamed as the response.</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">tuple</span></code></dt><dd><p>Either <code class="docutils literal notranslate"><span class="pre">(body,</span> <span class="pre">status,</span> <span class="pre">headers)</span></code>, <code class="docutils literal notranslate"><span class="pre">(body,</span> <span class="pre">status)</span></code>, or
<code class="docutils literal notranslate"><span class="pre">(body,</span> <span class="pre">headers)</span></code>, where <code class="docutils literal notranslate"><span class="pre">body</span></code> is any of the other types
allowed here, <code class="docutils literal notranslate"><span class="pre">status</span></code> is a string or an integer, and
<code class="docutils literal notranslate"><span class="pre">headers</span></code> is a dictionary or a list of <code class="docutils literal notranslate"><span class="pre">(key,</span> <span class="pre">value)</span></code>
tuples. If <code class="docutils literal notranslate"><span class="pre">body</span></code> is a <a class="reference internal" href="#flask.app.Flask.response_class" title="flask.app.Flask.response_class"><code class="xref py py-attr docutils literal notranslate"><span class="pre">response_class</span></code></a> instance,
<code class="docutils literal notranslate"><span class="pre">status</span></code> overwrites the exiting value and <code class="docutils literal notranslate"><span class="pre">headers</span></code> are
extended.</p>
</dd>
<dt><a class="reference internal" href="#flask.app.Flask.response_class" title="flask.app.Flask.response_class"><code class="xref py py-attr docutils literal notranslate"><span class="pre">response_class</span></code></a></dt><dd><p>The object is returned unchanged.</p>
</dd>
<dt>other <code class="xref py py-class docutils literal notranslate"><span class="pre">Response</span></code> class</dt><dd><p>The object is coerced to <a class="reference internal" href="#flask.app.Flask.response_class" title="flask.app.Flask.response_class"><code class="xref py py-attr docutils literal notranslate"><span class="pre">response_class</span></code></a>.</p>
</dd>
<dt><code class="xref py py-func docutils literal notranslate"><span class="pre">callable()</span></code></dt><dd><p>The function is called as a WSGI application. The result is
used to create a response object.</p>
</dd>
</dl>
</p>
</dd>
</dl>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.2: </span>A generator will be converted to a streaming response.
A list will be converted to a JSON response.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 1.1: </span>A dict will be converted to a JSON response.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.9: </span>Previously a tuple was interpreted as the arguments for the
response object.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.make_shell_context">
<span class="sig-name descname"><span class="pre">make_shell_context</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#flask.app.Flask.make_shell_context" title="Link to this definition"></a></dt>
<dd><p>Returns the shell context for an interactive shell for this
application. This runs all the registered shell context
processors.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.11.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.open_instance_resource">
<span class="sig-name descname"><span class="pre">open_instance_resource</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">resource</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">mode</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'rb'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoding</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'utf-8'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">IO</span></span></span><a class="headerlink" href="#flask.app.Flask.open_instance_resource" title="Link to this definition"></a></dt>
<dd><p>Open a resource file relative to the applications instance folder
<code class="xref py py-attr docutils literal notranslate"><span class="pre">instance_path</span></code>. Unlike <a class="reference internal" href="#flask.app.Flask.open_resource" title="flask.app.Flask.open_resource"><code class="xref py py-meth docutils literal notranslate"><span class="pre">open_resource()</span></code></a>, files in the
instance folder can be opened for writing.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>resource</strong> Path to the resource relative to <code class="xref py py-attr docutils literal notranslate"><span class="pre">instance_path</span></code>.</p></li>
<li><p><strong>mode</strong> Open the file in this mode.</p></li>
<li><p><strong>encoding</strong> Open the file with this encoding when opening in text
mode. This is ignored when opening in binary mode.</p></li>
</ul>
</dd>
</dl>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 3.1: </span>Added the <code class="docutils literal notranslate"><span class="pre">encoding</span></code> parameter.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.open_resource">
<span class="sig-name descname"><span class="pre">open_resource</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">resource</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">mode</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'rb'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoding</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">IO</span></span></span><a class="headerlink" href="#flask.app.Flask.open_resource" title="Link to this definition"></a></dt>
<dd><p>Open a resource file relative to <code class="xref py py-attr docutils literal notranslate"><span class="pre">root_path</span></code> for reading.</p>
<p>For example, if the file <code class="docutils literal notranslate"><span class="pre">schema.sql</span></code> is next to the file
<code class="docutils literal notranslate"><span class="pre">app.py</span></code> where the <code class="docutils literal notranslate"><span class="pre">Flask</span></code> app is defined, it can be opened
with:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">with</span> <span class="n">app</span><span class="o">.</span><span class="n">open_resource</span><span class="p">(</span><span class="s2">&quot;schema.sql&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="n">conn</span><span class="o">.</span><span class="n">executescript</span><span class="p">(</span><span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">())</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>resource</strong> Path to the resource relative to <code class="xref py py-attr docutils literal notranslate"><span class="pre">root_path</span></code>.</p></li>
<li><p><strong>mode</strong> Open the file in this mode. Only reading is supported,
valid values are <code class="docutils literal notranslate"><span class="pre">&quot;r&quot;</span></code> (or <code class="docutils literal notranslate"><span class="pre">&quot;rt&quot;</span></code>) and <code class="docutils literal notranslate"><span class="pre">&quot;rb&quot;</span></code>.</p></li>
<li><p><strong>encoding</strong> Open the file with this encoding when opening in text
mode. This is ignored when opening in binary mode.</p></li>
</ul>
</dd>
</dl>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 3.1: </span>Added the <code class="docutils literal notranslate"><span class="pre">encoding</span></code> parameter.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.preprocess_request">
<span class="sig-name descname"><span class="pre">preprocess_request</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">ft.ResponseReturnValue</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="headerlink" href="#flask.app.Flask.preprocess_request" title="Link to this definition"></a></dt>
<dd><p>Called before the request is dispatched. Calls
<code class="xref py py-attr docutils literal notranslate"><span class="pre">url_value_preprocessors</span></code> registered with the app and the
current blueprint (if any). Then calls <code class="xref py py-attr docutils literal notranslate"><span class="pre">before_request_funcs</span></code>
registered with the app and the blueprint.</p>
<p>If any <code class="xref py py-meth docutils literal notranslate"><span class="pre">before_request()</span></code> handler 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.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.process_response">
<span class="sig-name descname"><span class="pre">process_response</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">response</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.wrappers.Response" title="flask.wrappers.Response"><span class="pre">Response</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.wrappers.Response" title="flask.wrappers.Response"><span class="pre">Response</span></a></span></span><a class="headerlink" href="#flask.app.Flask.process_response" title="Link to this definition"></a></dt>
<dd><p>Can be overridden in order to modify the response object
before its sent to the WSGI server. By default this will
call all the <code class="xref py py-meth docutils literal notranslate"><span class="pre">after_request()</span></code> decorated functions.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.5: </span>As of Flask 0.5 the functions registered for after request
execution are called in reverse order of registration.</p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>response</strong> a <a class="reference internal" href="#flask.app.Flask.response_class" title="flask.app.Flask.response_class"><code class="xref py py-attr docutils literal notranslate"><span class="pre">response_class</span></code></a> object.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>a new response object or the same, has to be an
instance of <a class="reference internal" href="#flask.app.Flask.response_class" title="flask.app.Flask.response_class"><code class="xref py py-attr docutils literal notranslate"><span class="pre">response_class</span></code></a>.</p>
</dd>
</dl>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.app.Flask.request_class">
<span class="sig-name descname"><span class="pre">request_class</span></span><a class="headerlink" href="#flask.app.Flask.request_class" title="Link to this definition"></a></dt>
<dd><p>The class that is used for request objects. See <code class="xref py py-class docutils literal notranslate"><span class="pre">Request</span></code>
for more information.</p>
<p>alias of <a class="reference internal" href="#flask.wrappers.Request" title="flask.wrappers.Request"><code class="xref py py-class docutils literal notranslate"><span class="pre">Request</span></code></a></p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.request_context">
<span class="sig-name descname"><span class="pre">request_context</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">environ</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">WSGIEnvironment</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.ctx.RequestContext" title="flask.ctx.RequestContext"><span class="pre">RequestContext</span></a></span></span><a class="headerlink" href="#flask.app.Flask.request_context" title="Link to this definition"></a></dt>
<dd><p>Create a <a class="reference internal" href="#flask.ctx.RequestContext" title="flask.ctx.RequestContext"><code class="xref py py-class docutils literal notranslate"><span class="pre">RequestContext</span></code></a> representing a
WSGI environment. Use a <code class="docutils literal notranslate"><span class="pre">with</span></code> block to push the context,
which will make <code class="xref py py-data docutils literal notranslate"><span class="pre">request</span></code> point at this request.</p>
<p>See <span class="xref std std-doc">/reqcontext</span>.</p>
<p>Typically you should not call this from your own code. A request
context is automatically pushed by the <a class="reference internal" href="#flask.app.Flask.wsgi_app" title="flask.app.Flask.wsgi_app"><code class="xref py py-meth docutils literal notranslate"><span class="pre">wsgi_app()</span></code></a> when
handling a request. Use <a class="reference internal" href="#flask.app.Flask.test_request_context" title="flask.app.Flask.test_request_context"><code class="xref py py-meth docutils literal notranslate"><span class="pre">test_request_context()</span></code></a> to create
an environment and context instead of this method.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>environ</strong> a WSGI environment</p>
</dd>
</dl>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.app.Flask.response_class">
<span class="sig-name descname"><span class="pre">response_class</span></span><a class="headerlink" href="#flask.app.Flask.response_class" title="Link to this definition"></a></dt>
<dd><p>The class that is used for response objects. See
<code class="xref py py-class docutils literal notranslate"><span class="pre">Response</span></code> for more information.</p>
<p>alias of <a class="reference internal" href="#flask.wrappers.Response" title="flask.wrappers.Response"><code class="xref py py-class docutils literal notranslate"><span class="pre">Response</span></code></a></p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.run">
<span class="sig-name descname"><span class="pre">run</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">host</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">debug</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">load_dotenv</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">options</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#flask.app.Flask.run" title="Link to this definition"></a></dt>
<dd><p>Runs the application on a local development server.</p>
<p>Do not use <code class="docutils literal notranslate"><span class="pre">run()</span></code> in a production setting. It is not intended to
meet security and performance requirements for a production server.
Instead, see <span class="xref std std-doc">/deploying/index</span> for WSGI server recommendations.</p>
<p>If the <code class="xref py py-attr docutils literal notranslate"><span class="pre">debug</span></code> flag is set the server will automatically reload
for code changes and show a debugger in case an exception happened.</p>
<p>If you want to run the application in debug mode, but disable the
code execution on the interactive debugger, you can pass
<code class="docutils literal notranslate"><span class="pre">use_evalex=False</span></code> as parameter. This will keep the debuggers
traceback screen active, but disable code execution.</p>
<p>It is not recommended to use this function for development with
automatic reloading as this is badly supported. Instead you should
be using the <strong class="command">flask</strong> command line scripts <code class="docutils literal notranslate"><span class="pre">run</span></code> support.</p>
<div class="admonition-keep-in-mind admonition">
<p class="admonition-title">Keep in Mind</p>
<p>Flask will suppress any server error with a generic error page
unless it is in debug mode. As such to enable just the
interactive debugger without the code reloading, you have to
invoke <a class="reference internal" href="#flask.app.Flask.run" title="flask.app.Flask.run"><code class="xref py py-meth docutils literal notranslate"><span class="pre">run()</span></code></a> with <code class="docutils literal notranslate"><span class="pre">debug=True</span></code> and <code class="docutils literal notranslate"><span class="pre">use_reloader=False</span></code>.
Setting <code class="docutils literal notranslate"><span class="pre">use_debugger</span></code> to <code class="docutils literal notranslate"><span class="pre">True</span></code> without being in debug mode
wont catch any exceptions because there wont be any to
catch.</p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>host</strong> the hostname to listen on. Set this to <code class="docutils literal notranslate"><span class="pre">'0.0.0.0'</span></code> to
have the server available externally as well. Defaults to
<code class="docutils literal notranslate"><span class="pre">'127.0.0.1'</span></code> or the host in the <code class="docutils literal notranslate"><span class="pre">SERVER_NAME</span></code> config variable
if present.</p></li>
<li><p><strong>port</strong> the port of the webserver. Defaults to <code class="docutils literal notranslate"><span class="pre">5000</span></code> or the
port defined in the <code class="docutils literal notranslate"><span class="pre">SERVER_NAME</span></code> config variable if present.</p></li>
<li><p><strong>debug</strong> if given, enable or disable debug mode. See
<code class="xref py py-attr docutils literal notranslate"><span class="pre">debug</span></code>.</p></li>
<li><p><strong>load_dotenv</strong> Load the nearest <code class="file docutils literal notranslate"><span class="pre">.env</span></code> and <code class="file docutils literal notranslate"><span class="pre">.flaskenv</span></code>
files to set environment variables. Will also change the working
directory to the directory containing the first file found.</p></li>
<li><p><strong>options</strong> the options to be forwarded to the underlying Werkzeug
server. See <code class="xref py py-func docutils literal notranslate"><span class="pre">werkzeug.serving.run_simple()</span></code> for more
information.</p></li>
</ul>
</dd>
</dl>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 1.0: </span>If installed, python-dotenv will be used to load environment
variables from <code class="file docutils literal notranslate"><span class="pre">.env</span></code> and <code class="file docutils literal notranslate"><span class="pre">.flaskenv</span></code> files.</p>
<p>The <span class="target" id="index-0"></span><code class="xref std std-envvar docutils literal notranslate"><span class="pre">FLASK_DEBUG</span></code> environment variable will override <code class="xref py py-attr docutils literal notranslate"><span class="pre">debug</span></code>.</p>
<p>Threaded mode is enabled by default.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.10: </span>The default port is now picked from the <code class="docutils literal notranslate"><span class="pre">SERVER_NAME</span></code>
variable.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.send_static_file">
<span class="sig-name descname"><span class="pre">send_static_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.wrappers.Response" title="flask.wrappers.Response"><span class="pre">Response</span></a></span></span><a class="headerlink" href="#flask.app.Flask.send_static_file" title="Link to this definition"></a></dt>
<dd><p>The view function used to serve files from
<code class="xref py py-attr docutils literal notranslate"><span class="pre">static_folder</span></code>. A route is automatically registered for
this view at <code class="xref py py-attr docutils literal notranslate"><span class="pre">static_url_path</span></code> if <code class="xref py py-attr docutils literal notranslate"><span class="pre">static_folder</span></code> is
set.</p>
<p>Note this is a duplicate of the same method in the Flask
class.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.5.</span></p>
</div>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.app.Flask.session_interface">
<span class="sig-name descname"><span class="pre">session_interface</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#flask.sessions.SessionInterface" title="flask.sessions.SessionInterface"><span class="pre">SessionInterface</span></a></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">&lt;flask.sessions.SecureCookieSessionInterface</span> <span class="pre">object&gt;</span></em><a class="headerlink" href="#flask.app.Flask.session_interface" title="Link to this definition"></a></dt>
<dd><p>the session interface to use. By default an instance of
<a class="reference internal" href="#flask.sessions.SecureCookieSessionInterface" title="flask.sessions.SecureCookieSessionInterface"><code class="xref py py-class docutils literal notranslate"><span class="pre">SecureCookieSessionInterface</span></code></a> is used here.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.8.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.test_cli_runner">
<span class="sig-name descname"><span class="pre">test_cli_runner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">t.Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.testing.FlaskCliRunner" title="flask.testing.FlaskCliRunner"><span class="pre">FlaskCliRunner</span></a></span></span><a class="headerlink" href="#flask.app.Flask.test_cli_runner" title="Link to this definition"></a></dt>
<dd><p>Create a CLI runner for testing CLI commands.
See <span class="xref std std-ref">testing-cli</span>.</p>
<p>Returns an instance of <code class="xref py py-attr docutils literal notranslate"><span class="pre">test_cli_runner_class</span></code>, by default
<a class="reference internal" href="#flask.testing.FlaskCliRunner" title="flask.testing.FlaskCliRunner"><code class="xref py py-class docutils literal notranslate"><span class="pre">FlaskCliRunner</span></code></a>. The Flask app object is
passed as the first argument.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 1.0.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.test_client">
<span class="sig-name descname"><span class="pre">test_client</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">use_cookies</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">t.Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.testing.FlaskClient" title="flask.testing.FlaskClient"><span class="pre">FlaskClient</span></a></span></span><a class="headerlink" href="#flask.app.Flask.test_client" title="Link to this definition"></a></dt>
<dd><p>Creates a test client for this application. For information
about unit testing head over to <span class="xref std std-doc">/testing</span>.</p>
<p>Note that if you are testing for assertions or exceptions in your
application code, you must set <code class="docutils literal notranslate"><span class="pre">app.testing</span> <span class="pre">=</span> <span class="pre">True</span></code> in order for the
exceptions to propagate to the test client. Otherwise, the exception
will be handled by the application (not visible to the test client) and
the only indication of an AssertionError or other exception will be a
500 status code response to the test client. See the <code class="xref py py-attr docutils literal notranslate"><span class="pre">testing</span></code>
attribute. For example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">testing</span> <span class="o">=</span> <span class="kc">True</span>
<span class="n">client</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">test_client</span><span class="p">()</span>
</pre></div>
</div>
<p>The test client can be used in a <code class="docutils literal notranslate"><span class="pre">with</span></code> block to defer the closing down
of the context until the end of the <code class="docutils literal notranslate"><span class="pre">with</span></code> block. This is useful if
you want to access the context locals for testing:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">with</span> <span class="n">app</span><span class="o">.</span><span class="n">test_client</span><span class="p">()</span> <span class="k">as</span> <span class="n">c</span><span class="p">:</span>
<span class="n">rv</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;/?vodka=42&#39;</span><span class="p">)</span>
<span class="k">assert</span> <span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s1">&#39;vodka&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;42&#39;</span>
</pre></div>
</div>
<p>Additionally, you may pass optional keyword arguments that will then
be passed to the applications <code class="xref py py-attr docutils literal notranslate"><span class="pre">test_client_class</span></code> constructor.
For example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">flask.testing</span><span class="w"> </span><span class="kn">import</span> <span class="n">FlaskClient</span>
<span class="k">class</span><span class="w"> </span><span class="nc">CustomClient</span><span class="p">(</span><span class="n">FlaskClient</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_authentication</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;authentication&quot;</span><span class="p">)</span>
<span class="nb">super</span><span class="p">(</span><span class="n">CustomClient</span><span class="p">,</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="n">app</span><span class="o">.</span><span class="n">test_client_class</span> <span class="o">=</span> <span class="n">CustomClient</span>
<span class="n">client</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">test_client</span><span class="p">(</span><span class="n">authentication</span><span class="o">=</span><span class="s1">&#39;Basic ....&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>See <a class="reference internal" href="#flask.testing.FlaskClient" title="flask.testing.FlaskClient"><code class="xref py py-class docutils literal notranslate"><span class="pre">FlaskClient</span></code></a> for more information.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.4: </span>added support for <code class="docutils literal notranslate"><span class="pre">with</span></code> block usage for the client.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.7: </span>The <cite>use_cookies</cite> parameter was added as well as the ability
to override the client to be used by setting the
<code class="xref py py-attr docutils literal notranslate"><span class="pre">test_client_class</span></code> attribute.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.11: </span>Added <cite>**kwargs</cite> to support passing additional keyword arguments to
the constructor of <code class="xref py py-attr docutils literal notranslate"><span class="pre">test_client_class</span></code>.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.test_request_context">
<span class="sig-name descname"><span class="pre">test_request_context</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.ctx.RequestContext" title="flask.ctx.RequestContext"><span class="pre">RequestContext</span></a></span></span><a class="headerlink" href="#flask.app.Flask.test_request_context" title="Link to this definition"></a></dt>
<dd><p>Create a <a class="reference internal" href="#flask.ctx.RequestContext" title="flask.ctx.RequestContext"><code class="xref py py-class docutils literal notranslate"><span class="pre">RequestContext</span></code></a> for a WSGI
environment created from the given values. This is mostly useful
during testing, where you may want to run a function that uses
request data without dispatching a full request.</p>
<p>See <span class="xref std std-doc">/reqcontext</span>.</p>
<p>Use a <code class="docutils literal notranslate"><span class="pre">with</span></code> block to push the context, which will make
<code class="xref py py-data docutils literal notranslate"><span class="pre">request</span></code> point at the request for the created
environment.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">with</span> <span class="n">app</span><span class="o">.</span><span class="n">test_request_context</span><span class="p">(</span><span class="o">...</span><span class="p">):</span>
<span class="n">generate_report</span><span class="p">()</span>
</pre></div>
</div>
<p>When using the shell, it may be easier to push and pop the
context manually to avoid indentation.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">ctx</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">test_request_context</span><span class="p">(</span><span class="o">...</span><span class="p">)</span>
<span class="n">ctx</span><span class="o">.</span><span class="n">push</span><span class="p">()</span>
<span class="o">...</span>
<span class="n">ctx</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
</pre></div>
</div>
<p>Takes the same arguments as Werkzeugs
<code class="xref py py-class docutils literal notranslate"><span class="pre">EnvironBuilder</span></code>, with some defaults from
the application. See the linked Werkzeug docs for most of the
available arguments. Flask-specific behavior is listed here.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>path</strong> URL path being requested.</p></li>
<li><p><strong>base_url</strong> Base URL where the app is being served, which
<code class="docutils literal notranslate"><span class="pre">path</span></code> is relative to. If not given, built from
<code class="xref py py-data docutils literal notranslate"><span class="pre">PREFERRED_URL_SCHEME</span></code>, <code class="docutils literal notranslate"><span class="pre">subdomain</span></code>,
<code class="xref py py-data docutils literal notranslate"><span class="pre">SERVER_NAME</span></code>, and <code class="xref py py-data docutils literal notranslate"><span class="pre">APPLICATION_ROOT</span></code>.</p></li>
<li><p><strong>subdomain</strong> Subdomain name to append to
<code class="xref py py-data docutils literal notranslate"><span class="pre">SERVER_NAME</span></code>.</p></li>
<li><p><strong>url_scheme</strong> Scheme to use instead of
<code class="xref py py-data docutils literal notranslate"><span class="pre">PREFERRED_URL_SCHEME</span></code>.</p></li>
<li><p><strong>data</strong> The request body, either as a string or a dict of
form keys and values.</p></li>
<li><p><strong>json</strong> If given, this is serialized as JSON and passed as
<code class="docutils literal notranslate"><span class="pre">data</span></code>. Also defaults <code class="docutils literal notranslate"><span class="pre">content_type</span></code> to
<code class="docutils literal notranslate"><span class="pre">application/json</span></code>.</p></li>
<li><p><strong>args</strong> other positional arguments passed to
<code class="xref py py-class docutils literal notranslate"><span class="pre">EnvironBuilder</span></code>.</p></li>
<li><p><strong>kwargs</strong> other keyword arguments passed to
<code class="xref py py-class docutils literal notranslate"><span class="pre">EnvironBuilder</span></code>.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.update_template_context">
<span class="sig-name descname"><span class="pre">update_template_context</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">context</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#flask.app.Flask.update_template_context" title="Link to this definition"></a></dt>
<dd><p>Update the template context with some commonly used variables.
This injects request, session, config and g into the template
context as well as everything template context processors want
to inject. Note that the as of Flask 0.6, the original values
in the context will not be overridden if a context processor
decides to return a value with the same key.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>context</strong> the context as a dictionary that is updated in place
to add extra variables.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.url_for">
<span class="sig-name descname"><span class="pre">url_for</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">endpoint</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_anchor</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_method</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_scheme</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_external</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">values</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="headerlink" href="#flask.app.Flask.url_for" title="Link to this definition"></a></dt>
<dd><p>Generate a URL to the given endpoint with the given values.</p>
<p>This is called by <code class="xref py py-func docutils literal notranslate"><span class="pre">flask.url_for()</span></code>, and can be called
directly as well.</p>
<p>An <em>endpoint</em> is the name of a URL rule, usually added with
<code class="xref py py-meth docutils literal notranslate"><span class="pre">&#64;app.route()</span></code>, and usually the same name as the
view function. A route defined in a <code class="xref py py-class docutils literal notranslate"><span class="pre">Blueprint</span></code>
will prepend the blueprints name separated by a <code class="docutils literal notranslate"><span class="pre">.</span></code> to the
endpoint.</p>
<p>In some cases, such as email messages, you want URLs to include
the scheme and domain, like <code class="docutils literal notranslate"><span class="pre">https://example.com/hello</span></code>. When
not in an active request, URLs will be external by default, but
this requires setting <code class="xref py py-data docutils literal notranslate"><span class="pre">SERVER_NAME</span></code> so Flask knows what
domain to use. <code class="xref py py-data docutils literal notranslate"><span class="pre">APPLICATION_ROOT</span></code> and
<code class="xref py py-data docutils literal notranslate"><span class="pre">PREFERRED_URL_SCHEME</span></code> should also be configured as
needed. This config is only used when not in an active request.</p>
<p>Functions can be decorated with <code class="xref py py-meth docutils literal notranslate"><span class="pre">url_defaults()</span></code> to modify
keyword arguments before the URL is built.</p>
<p>If building fails for some reason, such as an unknown endpoint
or incorrect values, the apps <code class="xref py py-meth docutils literal notranslate"><span class="pre">handle_url_build_error()</span></code>
method is called. If that returns a string, that is returned,
otherwise a <code class="xref py py-exc docutils literal notranslate"><span class="pre">BuildError</span></code> is raised.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>endpoint</strong> The endpoint name associated with the URL to
generate. If this starts with a <code class="docutils literal notranslate"><span class="pre">.</span></code>, the current blueprint
name (if any) will be used.</p></li>
<li><p><strong>_anchor</strong> If given, append this as <code class="docutils literal notranslate"><span class="pre">#anchor</span></code> to the URL.</p></li>
<li><p><strong>_method</strong> If given, generate the URL associated with this
method for the endpoint.</p></li>
<li><p><strong>_scheme</strong> If given, the URL will have this scheme if it
is external.</p></li>
<li><p><strong>_external</strong> If given, prefer the URL to be internal
(False) or require it to be external (True). External URLs
include the scheme and domain. When not in an active
request, URLs are external by default.</p></li>
<li><p><strong>values</strong> Values to use for the variable parts of the URL
rule. Unknown keys are appended as query string arguments,
like <code class="docutils literal notranslate"><span class="pre">?a=b&amp;c=d</span></code>.</p></li>
</ul>
</dd>
</dl>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 2.2: </span>Moved from <code class="docutils literal notranslate"><span class="pre">flask.url_for</span></code>, which calls this method.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.app.Flask.wsgi_app">
<span class="sig-name descname"><span class="pre">wsgi_app</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">environ</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">WSGIEnvironment</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">start_response</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">StartResponse</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">cabc.Iterable</span><span class="p"><span class="pre">[</span></span><span class="pre">bytes</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#flask.app.Flask.wsgi_app" title="Link to this definition"></a></dt>
<dd><p>The actual WSGI application. This is not implemented in
<code class="xref py py-meth docutils literal notranslate"><span class="pre">__call__()</span></code> so that middlewares can be applied without
losing a reference to the app object. Instead of doing this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">app</span> <span class="o">=</span> <span class="n">MyMiddleware</span><span class="p">(</span><span class="n">app</span><span class="p">)</span>
</pre></div>
</div>
<p>Its a better idea to do this instead:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">wsgi_app</span> <span class="o">=</span> <span class="n">MyMiddleware</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">wsgi_app</span><span class="p">)</span>
</pre></div>
</div>
<p>Then you still have the original application object around and
can continue to call methods on it.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.7: </span>Teardown events for the request and app contexts are called
even if an unhandled error occurs. Other events may not be
called depending on when an error occurs during dispatch.
See <span class="xref std std-ref">callbacks-and-errors</span>.</p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>environ</strong> A WSGI environment.</p></li>
<li><p><strong>start_response</strong> A callable accepting a status code,
a list of headers, and an optional exception context to
start the response.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
</dd></dl>
</section>
<section id="module-flask.blueprints">
<span id="flask-blueprints-module"></span><h2>flask.blueprints module<a class="headerlink" href="#module-flask.blueprints" title="Link to this heading"></a></h2>
<dl class="py class">
<dt class="sig sig-object py" id="flask.blueprints.Blueprint">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.blueprints.</span></span><span class="sig-name descname"><span class="pre">Blueprint</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name:</span> <span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">import_name:</span> <span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">static_folder:</span> <span class="pre">str</span> <span class="pre">|</span> <span class="pre">~os.PathLike[str]</span> <span class="pre">|</span> <span class="pre">None</span> <span class="pre">=</span> <span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">static_url_path:</span> <span class="pre">str</span> <span class="pre">|</span> <span class="pre">None</span> <span class="pre">=</span> <span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">template_folder:</span> <span class="pre">str</span> <span class="pre">|</span> <span class="pre">~os.PathLike[str]</span> <span class="pre">|</span> <span class="pre">None</span> <span class="pre">=</span> <span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">url_prefix:</span> <span class="pre">str</span> <span class="pre">|</span> <span class="pre">None</span> <span class="pre">=</span> <span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">subdomain:</span> <span class="pre">str</span> <span class="pre">|</span> <span class="pre">None</span> <span class="pre">=</span> <span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">url_defaults:</span> <span class="pre">dict[str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">~typing.Any]</span> <span class="pre">|</span> <span class="pre">None</span> <span class="pre">=</span> <span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">root_path:</span> <span class="pre">str</span> <span class="pre">|</span> <span class="pre">None</span> <span class="pre">=</span> <span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cli_group:</span> <span class="pre">str</span> <span class="pre">|</span> <span class="pre">None</span> <span class="pre">=</span> <span class="pre">&lt;object</span> <span class="pre">object&gt;</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.blueprints.Blueprint" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Blueprint</span></code></p>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.blueprints.Blueprint.cli">
<span class="sig-name descname"><span class="pre">cli</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Group</span></em><a class="headerlink" href="#flask.blueprints.Blueprint.cli" title="Link to this definition"></a></dt>
<dd><p>The Click command group for registering CLI commands for this
object. The commands are available from the <code class="docutils literal notranslate"><span class="pre">flask</span></code> command
once the application has been discovered and blueprints have
been registered.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.blueprints.Blueprint.get_send_file_max_age">
<span class="sig-name descname"><span class="pre">get_send_file_max_age</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="headerlink" href="#flask.blueprints.Blueprint.get_send_file_max_age" title="Link to this definition"></a></dt>
<dd><p>Used by <code class="xref py py-func docutils literal notranslate"><span class="pre">send_file()</span></code> to determine the <code class="docutils literal notranslate"><span class="pre">max_age</span></code> cache
value for a given file path if it wasnt passed.</p>
<p>By default, this returns <code class="xref py py-data docutils literal notranslate"><span class="pre">SEND_FILE_MAX_AGE_DEFAULT</span></code> from
the configuration of <code class="xref py py-data docutils literal notranslate"><span class="pre">current_app</span></code>. This defaults
to <code class="docutils literal notranslate"><span class="pre">None</span></code>, which tells the browser to use conditional requests
instead of a timed cache, which is usually preferable.</p>
<p>Note this is a duplicate of the same method in the Flask
class.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.0: </span>The default configuration is <code class="docutils literal notranslate"><span class="pre">None</span></code> instead of 12 hours.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.9.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.blueprints.Blueprint.open_resource">
<span class="sig-name descname"><span class="pre">open_resource</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">resource</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">mode</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'rb'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoding</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'utf-8'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">IO</span></span></span><a class="headerlink" href="#flask.blueprints.Blueprint.open_resource" title="Link to this definition"></a></dt>
<dd><p>Open a resource file relative to <code class="xref py py-attr docutils literal notranslate"><span class="pre">root_path</span></code> for reading. The
blueprint-relative equivalent of the apps <a class="reference internal" href="#flask.app.Flask.open_resource" title="flask.app.Flask.open_resource"><code class="xref py py-meth docutils literal notranslate"><span class="pre">open_resource()</span></code></a>
method.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>resource</strong> Path to the resource relative to <code class="xref py py-attr docutils literal notranslate"><span class="pre">root_path</span></code>.</p></li>
<li><p><strong>mode</strong> Open the file in this mode. Only reading is supported,
valid values are <code class="docutils literal notranslate"><span class="pre">&quot;r&quot;</span></code> (or <code class="docutils literal notranslate"><span class="pre">&quot;rt&quot;</span></code>) and <code class="docutils literal notranslate"><span class="pre">&quot;rb&quot;</span></code>.</p></li>
<li><p><strong>encoding</strong> Open the file with this encoding when opening in text
mode. This is ignored when opening in binary mode.</p></li>
</ul>
</dd>
</dl>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 3.1: </span>Added the <code class="docutils literal notranslate"><span class="pre">encoding</span></code> parameter.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.blueprints.Blueprint.send_static_file">
<span class="sig-name descname"><span class="pre">send_static_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.wrappers.Response" title="flask.wrappers.Response"><span class="pre">Response</span></a></span></span><a class="headerlink" href="#flask.blueprints.Blueprint.send_static_file" title="Link to this definition"></a></dt>
<dd><p>The view function used to serve files from
<code class="xref py py-attr docutils literal notranslate"><span class="pre">static_folder</span></code>. A route is automatically registered for
this view at <code class="xref py py-attr docutils literal notranslate"><span class="pre">static_url_path</span></code> if <code class="xref py py-attr docutils literal notranslate"><span class="pre">static_folder</span></code> is
set.</p>
<p>Note this is a duplicate of the same method in the Flask
class.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.5.</span></p>
</div>
</dd></dl>
</dd></dl>
</section>
<section id="module-flask.cli">
<span id="flask-cli-module"></span><h2>flask.cli module<a class="headerlink" href="#module-flask.cli" title="Link to this heading"></a></h2>
<dl class="py class">
<dt class="sig sig-object py" id="flask.cli.AppGroup">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.cli.</span></span><span class="sig-name descname"><span class="pre">AppGroup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">commands</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">MutableMapping</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Command</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Command</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">attrs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.cli.AppGroup" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Group</span></code></p>
<p>This works similar to a regular click <code class="xref py py-class docutils literal notranslate"><span class="pre">Group</span></code> but it
changes the behavior of the <a class="reference internal" href="#flask.cli.AppGroup.command" title="flask.cli.AppGroup.command"><code class="xref py py-meth docutils literal notranslate"><span class="pre">command()</span></code></a> decorator so that it
automatically wraps the functions in <a class="reference internal" href="#flask.cli.with_appcontext" title="flask.cli.with_appcontext"><code class="xref py py-func docutils literal notranslate"><span class="pre">with_appcontext()</span></code></a>.</p>
<p>Not to be confused with <a class="reference internal" href="#flask.cli.FlaskGroup" title="flask.cli.FlaskGroup"><code class="xref py py-class docutils literal notranslate"><span class="pre">FlaskGroup</span></code></a>.</p>
<dl class="py method">
<dt class="sig sig-object py" id="flask.cli.AppGroup.command">
<span class="sig-name descname"><span class="pre">command</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Command</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#flask.cli.AppGroup.command" title="Link to this definition"></a></dt>
<dd><p>This works exactly like the method of the same name on a regular
<code class="xref py py-class docutils literal notranslate"><span class="pre">click.Group</span></code> but it wraps callbacks in <a class="reference internal" href="#flask.cli.with_appcontext" title="flask.cli.with_appcontext"><code class="xref py py-func docutils literal notranslate"><span class="pre">with_appcontext()</span></code></a>
unless its disabled by passing <code class="docutils literal notranslate"><span class="pre">with_appcontext=False</span></code>.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.cli.AppGroup.group">
<span class="sig-name descname"><span class="pre">group</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Group</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#flask.cli.AppGroup.group" title="Link to this definition"></a></dt>
<dd><p>This works exactly like the method of the same name on a regular
<code class="xref py py-class docutils literal notranslate"><span class="pre">click.Group</span></code> but it defaults the group class to
<a class="reference internal" href="#flask.cli.AppGroup" title="flask.cli.AppGroup"><code class="xref py py-class docutils literal notranslate"><span class="pre">AppGroup</span></code></a>.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="flask.cli.CertParamType">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.cli.</span></span><span class="sig-name descname"><span class="pre">CertParamType</span></span><a class="headerlink" href="#flask.cli.CertParamType" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">ParamType</span></code></p>
<p>Click option type for the <code class="docutils literal notranslate"><span class="pre">--cert</span></code> option. Allows either an
existing file, the string <code class="docutils literal notranslate"><span class="pre">'adhoc'</span></code>, or an import for a
<code class="xref py py-class docutils literal notranslate"><span class="pre">SSLContext</span></code> object.</p>
<dl class="py method">
<dt class="sig sig-object py" id="flask.cli.CertParamType.convert">
<span class="sig-name descname"><span class="pre">convert</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">param</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Parameter</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Context</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="headerlink" href="#flask.cli.CertParamType.convert" title="Link to this definition"></a></dt>
<dd><p>Convert the value to the correct type. This is not called if
the value is <code class="docutils literal notranslate"><span class="pre">None</span></code> (the missing value).</p>
<p>This must accept string values from the command line, as well as
values that are already the correct type. It may also convert
other compatible types.</p>
<p>The <code class="docutils literal notranslate"><span class="pre">param</span></code> and <code class="docutils literal notranslate"><span class="pre">ctx</span></code> arguments may be <code class="docutils literal notranslate"><span class="pre">None</span></code> in certain
situations, such as when converting prompt input.</p>
<p>If the value cannot be converted, call <code class="xref py py-meth docutils literal notranslate"><span class="pre">fail()</span></code> with a
descriptive message.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>value</strong> The value to convert.</p></li>
<li><p><strong>param</strong> The parameter that is using this type to convert
its value. May be <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p></li>
<li><p><strong>ctx</strong> The current context that arrived at this value. May
be <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.cli.CertParamType.name">
<span class="sig-name descname"><span class="pre">name</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'path'</span></em><a class="headerlink" href="#flask.cli.CertParamType.name" title="Link to this definition"></a></dt>
<dd><p>the descriptive name of this type</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="flask.cli.FlaskGroup">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.cli.</span></span><span class="sig-name descname"><span class="pre">FlaskGroup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">add_default_commands</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">create_app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">t.Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">add_version_option</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">load_dotenv</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">set_debug_flag</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">extra</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">t.Any</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.cli.FlaskGroup" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#flask.cli.AppGroup" title="flask.cli.AppGroup"><code class="xref py py-class docutils literal notranslate"><span class="pre">AppGroup</span></code></a></p>
<p>Special subclass of the <a class="reference internal" href="#flask.cli.AppGroup" title="flask.cli.AppGroup"><code class="xref py py-class docutils literal notranslate"><span class="pre">AppGroup</span></code></a> group that supports
loading more commands from the configured Flask app. Normally a
developer does not have to interface with this class but there are
some very advanced use cases for which it makes sense to create an
instance of this. see <span class="xref std std-ref">custom-scripts</span>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>add_default_commands</strong> if this is True then the default run and
shell commands will be added.</p></li>
<li><p><strong>add_version_option</strong> adds the <code class="docutils literal notranslate"><span class="pre">--version</span></code> option.</p></li>
<li><p><strong>create_app</strong> an optional callback that is passed the script info and
returns the loaded app.</p></li>
<li><p><strong>load_dotenv</strong> Load the nearest <code class="file docutils literal notranslate"><span class="pre">.env</span></code> and <code class="file docutils literal notranslate"><span class="pre">.flaskenv</span></code>
files to set environment variables. Will also change the working
directory to the directory containing the first file found.</p></li>
<li><p><strong>set_debug_flag</strong> Set the apps debug flag.</p></li>
</ul>
</dd>
</dl>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 3.1: </span><code class="docutils literal notranslate"><span class="pre">-e</span> <span class="pre">path</span></code> takes precedence over default <code class="docutils literal notranslate"><span class="pre">.env</span></code> and <code class="docutils literal notranslate"><span class="pre">.flaskenv</span></code> files.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.2: </span>Added the <code class="docutils literal notranslate"><span class="pre">-A/--app</span></code>, <code class="docutils literal notranslate"><span class="pre">--debug/--no-debug</span></code>, <code class="docutils literal notranslate"><span class="pre">-e/--env-file</span></code> options.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.2: </span>An app context is pushed when running <code class="docutils literal notranslate"><span class="pre">app.cli</span></code> commands, so
<code class="docutils literal notranslate"><span class="pre">&#64;with_appcontext</span></code> is no longer required for those commands.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 1.0: </span>If installed, python-dotenv will be used to load environment variables
from <code class="file docutils literal notranslate"><span class="pre">.env</span></code> and <code class="file docutils literal notranslate"><span class="pre">.flaskenv</span></code> files.</p>
</div>
<dl class="py method">
<dt class="sig sig-object py" id="flask.cli.FlaskGroup.get_command">
<span class="sig-name descname"><span class="pre">get_command</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Context</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Command</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="headerlink" href="#flask.cli.FlaskGroup.get_command" title="Link to this definition"></a></dt>
<dd><p>Given a context and a command name, this returns a
<code class="xref py py-class docutils literal notranslate"><span class="pre">Command</span></code> object if it exists or returns <cite>None</cite>.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.cli.FlaskGroup.list_commands">
<span class="sig-name descname"><span class="pre">list_commands</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Context</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#flask.cli.FlaskGroup.list_commands" title="Link to this definition"></a></dt>
<dd><p>Returns a list of subcommand names in the order they should
appear.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.cli.FlaskGroup.make_context">
<span class="sig-name descname"><span class="pre">make_context</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">info_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parent</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Context</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">extra</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Context</span></span></span><a class="headerlink" href="#flask.cli.FlaskGroup.make_context" title="Link to this definition"></a></dt>
<dd><p>This function when given an info name and arguments will kick
off the parsing and create a new <code class="xref py py-class docutils literal notranslate"><span class="pre">Context</span></code>. It does not
invoke the actual command callback though.</p>
<p>To quickly customize the context class used without overriding
this method, set the <code class="xref py py-attr docutils literal notranslate"><span class="pre">context_class</span></code> attribute.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>info_name</strong> the info name for this invocation. Generally this
is the most descriptive name for the script or
command. For the toplevel script its usually
the name of the script, for commands below its
the name of the command.</p></li>
<li><p><strong>args</strong> the arguments to parse as list of strings.</p></li>
<li><p><strong>parent</strong> the parent context if available.</p></li>
<li><p><strong>extra</strong> extra keyword arguments forwarded to the context
constructor.</p></li>
</ul>
</dd>
</dl>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 8.0: </span>Added the <code class="xref py py-attr docutils literal notranslate"><span class="pre">context_class</span></code> attribute.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.cli.FlaskGroup.parse_args">
<span class="sig-name descname"><span class="pre">parse_args</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Context</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#flask.cli.FlaskGroup.parse_args" title="Link to this definition"></a></dt>
<dd><p>Given a context and a list of arguments this creates the parser
and parses the arguments, then modifies the context as necessary.
This is automatically invoked by <a class="reference internal" href="#flask.cli.FlaskGroup.make_context" title="flask.cli.FlaskGroup.make_context"><code class="xref py py-meth docutils literal notranslate"><span class="pre">make_context()</span></code></a>.</p>
</dd></dl>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="flask.cli.NoAppException">
<em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.cli.</span></span><span class="sig-name descname"><span class="pre">NoAppException</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">message</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Context</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.cli.NoAppException" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">UsageError</span></code></p>
<p>Raised if an application cannot be found or loaded.</p>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="flask.cli.ScriptInfo">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.cli.</span></span><span class="sig-name descname"><span class="pre">ScriptInfo</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app_import_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">create_app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">t.Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">set_debug_flag</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">load_dotenv_defaults</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.cli.ScriptInfo" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Helper object to deal with Flask applications. This is usually not
necessary to interface with as its used internally in the dispatching
to click. In future versions of Flask this object will most likely play
a bigger role. Typically its created automatically by the
<a class="reference internal" href="#flask.cli.FlaskGroup" title="flask.cli.FlaskGroup"><code class="xref py py-class docutils literal notranslate"><span class="pre">FlaskGroup</span></code></a> but you can also manually create it and pass it
onwards as click object.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 3.1: </span>Added the <code class="docutils literal notranslate"><span class="pre">load_dotenv_defaults</span></code> parameter and attribute.</p>
</div>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.cli.ScriptInfo.app_import_path">
<span class="sig-name descname"><span class="pre">app_import_path</span></span><a class="headerlink" href="#flask.cli.ScriptInfo.app_import_path" title="Link to this definition"></a></dt>
<dd><p>Optionally the import path for the Flask application.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.cli.ScriptInfo.create_app">
<span class="sig-name descname"><span class="pre">create_app</span></span><a class="headerlink" href="#flask.cli.ScriptInfo.create_app" title="Link to this definition"></a></dt>
<dd><p>Optionally a function that is passed the script info to create
the instance of the application.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.cli.ScriptInfo.data">
<span class="sig-name descname"><span class="pre">data</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">t.Any</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">t.Any</span><span class="p"><span class="pre">]</span></span></em><a class="headerlink" href="#flask.cli.ScriptInfo.data" title="Link to this definition"></a></dt>
<dd><p>A dictionary with arbitrary data that can be associated with
this script info.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.cli.ScriptInfo.load_app">
<span class="sig-name descname"><span class="pre">load_app</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></span><a class="headerlink" href="#flask.cli.ScriptInfo.load_app" title="Link to this definition"></a></dt>
<dd><p>Loads the Flask app (if not yet loaded) and returns it. Calling
this multiple times will just result in the already loaded app to
be returned.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.cli.ScriptInfo.load_dotenv_defaults">
<span class="sig-name descname"><span class="pre">load_dotenv_defaults</span></span><a class="headerlink" href="#flask.cli.ScriptInfo.load_dotenv_defaults" title="Link to this definition"></a></dt>
<dd><p>Whether default <code class="docutils literal notranslate"><span class="pre">.flaskenv</span></code> and <code class="docutils literal notranslate"><span class="pre">.env</span></code> files should be loaded.</p>
<p><code class="docutils literal notranslate"><span class="pre">ScriptInfo</span></code> doesnt load anything, this is for reference when doing
the load elsewhere during processing.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 3.1.</span></p>
</div>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="flask.cli.SeparatedPathType">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.cli.</span></span><span class="sig-name descname"><span class="pre">SeparatedPathType</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">exists</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">file_okay</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dir_okay</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">writable</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">readable</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">resolve_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">allow_dash</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path_type</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Type</span><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">executable</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.cli.SeparatedPathType" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Path</span></code></p>
<p>Click option type that accepts a list of values separated by the
OSs path separator (<code class="docutils literal notranslate"><span class="pre">:</span></code>, <code class="docutils literal notranslate"><span class="pre">;</span></code> on Windows). Each value is
validated as a <code class="xref py py-class docutils literal notranslate"><span class="pre">click.Path</span></code> type.</p>
<dl class="py method">
<dt class="sig sig-object py" id="flask.cli.SeparatedPathType.convert">
<span class="sig-name descname"><span class="pre">convert</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">param</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Parameter</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Context</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="headerlink" href="#flask.cli.SeparatedPathType.convert" title="Link to this definition"></a></dt>
<dd><p>Convert the value to the correct type. This is not called if
the value is <code class="docutils literal notranslate"><span class="pre">None</span></code> (the missing value).</p>
<p>This must accept string values from the command line, as well as
values that are already the correct type. It may also convert
other compatible types.</p>
<p>The <code class="docutils literal notranslate"><span class="pre">param</span></code> and <code class="docutils literal notranslate"><span class="pre">ctx</span></code> arguments may be <code class="docutils literal notranslate"><span class="pre">None</span></code> in certain
situations, such as when converting prompt input.</p>
<p>If the value cannot be converted, call <code class="xref py py-meth docutils literal notranslate"><span class="pre">fail()</span></code> with a
descriptive message.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>value</strong> The value to convert.</p></li>
<li><p><strong>param</strong> The parameter that is using this type to convert
its value. May be <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p></li>
<li><p><strong>ctx</strong> The current context that arrived at this value. May
be <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.cli.find_app_by_string">
<span class="sig-prename descclassname"><span class="pre">flask.cli.</span></span><span class="sig-name descname"><span class="pre">find_app_by_string</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">module</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">ModuleType</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">app_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></span><a class="headerlink" href="#flask.cli.find_app_by_string" title="Link to this definition"></a></dt>
<dd><p>Check if the given string is a variable name or a function. Call
a function to get the app instance, or return the variable directly.</p>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.cli.find_best_app">
<span class="sig-prename descclassname"><span class="pre">flask.cli.</span></span><span class="sig-name descname"><span class="pre">find_best_app</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">module</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">ModuleType</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></span><a class="headerlink" href="#flask.cli.find_best_app" title="Link to this definition"></a></dt>
<dd><p>Given a module instance this tries to find the best possible
application in the module or raises an exception.</p>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.cli.get_version">
<span class="sig-prename descclassname"><span class="pre">flask.cli.</span></span><span class="sig-name descname"><span class="pre">get_version</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Context</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">param</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Parameter</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">value</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#flask.cli.get_version" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.cli.load_dotenv">
<span class="sig-prename descclassname"><span class="pre">flask.cli.</span></span><span class="sig-name descname"><span class="pre">load_dotenv</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">PathLike</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">load_defaults</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#flask.cli.load_dotenv" title="Link to this definition"></a></dt>
<dd><p>Load “dotenv” files to set environment variables. A given path takes
precedence over <code class="docutils literal notranslate"><span class="pre">.env</span></code>, which takes precedence over <code class="docutils literal notranslate"><span class="pre">.flaskenv</span></code>. After
loading and combining these files, values are only set if the key is not
already set in <code class="docutils literal notranslate"><span class="pre">os.environ</span></code>.</p>
<p>This is a no-op if <a class="reference external" href="https://github.com/theskumar/python-dotenv#readme">python-dotenv</a> is not installed.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>path</strong> Load the file at this location.</p></li>
<li><p><strong>load_defaults</strong> Search for and load the default <code class="docutils literal notranslate"><span class="pre">.flaskenv</span></code> and
<code class="docutils literal notranslate"><span class="pre">.env</span></code> files.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">True</span></code> if at least one env var was loaded.</p>
</dd>
</dl>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 3.1: </span>Added the <code class="docutils literal notranslate"><span class="pre">load_defaults</span></code> parameter. A given path takes precedence
over default files.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.0: </span>The current directory is not changed to the location of the
loaded file.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.0: </span>When loading the env files, set the default encoding to UTF-8.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 1.1.0: </span>Returns <code class="docutils literal notranslate"><span class="pre">False</span></code> when python-dotenv is not installed, or when
the given path isnt a file.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 1.0.</span></p>
</div>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.cli.locate_app">
<span class="sig-prename descclassname"><span class="pre">flask.cli.</span></span><span class="sig-name descname"><span class="pre">locate_app</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">module_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">app_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">raise_if_not_found</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Literal</span><span class="p"><span class="pre">[</span></span><span class="k"><span class="pre">True</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></span><a class="headerlink" href="#flask.cli.locate_app" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">flask.cli.</span></span><span class="sig-name descname"><span class="pre">locate_app</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">module_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">app_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">raise_if_not_found</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Literal</span><span class="p"><span class="pre">[</span></span><span class="k"><span class="pre">False</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span></dt>
<dd></dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.cli.main">
<span class="sig-prename descclassname"><span class="pre">flask.cli.</span></span><span class="sig-name descname"><span class="pre">main</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#flask.cli.main" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.cli.prepare_import">
<span class="sig-prename descclassname"><span class="pre">flask.cli.</span></span><span class="sig-name descname"><span class="pre">prepare_import</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="headerlink" href="#flask.cli.prepare_import" title="Link to this definition"></a></dt>
<dd><p>Given a filename this will try to calculate the python path, add it
to the search path and return the actual module name that is expected.</p>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.cli.show_server_banner">
<span class="sig-prename descclassname"><span class="pre">flask.cli.</span></span><span class="sig-name descname"><span class="pre">show_server_banner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">debug</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">app_import_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#flask.cli.show_server_banner" title="Link to this definition"></a></dt>
<dd><p>Show extra startup messages the first time the server is run,
ignoring the reloader.</p>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.cli.with_appcontext">
<span class="sig-prename descclassname"><span class="pre">flask.cli.</span></span><span class="sig-name descname"><span class="pre">with_appcontext</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">f</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">F</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">F</span></span></span><a class="headerlink" href="#flask.cli.with_appcontext" title="Link to this definition"></a></dt>
<dd><p>Wraps a callback so that its guaranteed to be executed with the
scripts application context.</p>
<p>Custom commands (and their options) registered under <code class="docutils literal notranslate"><span class="pre">app.cli</span></code> or
<code class="docutils literal notranslate"><span class="pre">blueprint.cli</span></code> will always have an app context available, this
decorator is not required in that case.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.2: </span>The app context is active for subcommands as well as the
decorated callback. The app context is always available to
<code class="docutils literal notranslate"><span class="pre">app.cli</span></code> command and parameter callbacks.</p>
</div>
</dd></dl>
</section>
<section id="module-flask.config">
<span id="flask-config-module"></span><h2>flask.config module<a class="headerlink" href="#module-flask.config" title="Link to this heading"></a></h2>
<dl class="py class">
<dt class="sig sig-object py" id="flask.config.Config">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.config.</span></span><span class="sig-name descname"><span class="pre">Config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">root_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">PathLike</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">defaults</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.config.Config" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">dict</span></code></p>
<p>Works exactly like a dict but provides ways to fill it from files
or special dictionaries. There are two common patterns to populate the
config.</p>
<p>Either you can fill the config from a config file:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">from_pyfile</span><span class="p">(</span><span class="s1">&#39;yourconfig.cfg&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>Or alternatively you can define the configuration options in the
module that calls <a class="reference internal" href="#flask.config.Config.from_object" title="flask.config.Config.from_object"><code class="xref py py-meth docutils literal notranslate"><span class="pre">from_object()</span></code></a> or provide an import path to
a module that should be loaded. It is also possible to tell it to
use the same module and with that provide the configuration values
just before the call:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">DEBUG</span> <span class="o">=</span> <span class="kc">True</span>
<span class="n">SECRET_KEY</span> <span class="o">=</span> <span class="s1">&#39;development key&#39;</span>
<span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">from_object</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
</pre></div>
</div>
<p>In both cases (loading from any Python file or loading from modules),
only uppercase keys are added to the config. This makes it possible to use
lowercase values in the config file for temporary values that are not added
to the config or to define the config keys in the same file that implements
the application.</p>
<p>Probably the most interesting way to load configurations is from an
environment variable pointing to a file:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">from_envvar</span><span class="p">(</span><span class="s1">&#39;YOURAPPLICATION_SETTINGS&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>In this case before launching the application you have to set this
environment variable to the file you want to use. On Linux and OS X
use the export statement:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">export</span> <span class="n">YOURAPPLICATION_SETTINGS</span><span class="o">=</span><span class="s1">&#39;/path/to/config/file&#39;</span>
</pre></div>
</div>
<p>On windows use <cite>set</cite> instead.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>root_path</strong> path to which files are read relative from. When the
config object is created by the application, this is
the applications <code class="xref py py-attr docutils literal notranslate"><span class="pre">root_path</span></code>.</p></li>
<li><p><strong>defaults</strong> an optional dictionary of default values</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.config.Config.from_envvar">
<span class="sig-name descname"><span class="pre">from_envvar</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">variable_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">silent</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#flask.config.Config.from_envvar" title="Link to this definition"></a></dt>
<dd><p>Loads a configuration from an environment variable pointing to
a configuration file. This is basically just a shortcut with nicer
error messages for this line of code:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">from_pyfile</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s1">&#39;YOURAPPLICATION_SETTINGS&#39;</span><span class="p">])</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>variable_name</strong> name of the environment variable</p></li>
<li><p><strong>silent</strong> set to <code class="docutils literal notranslate"><span class="pre">True</span></code> if you want silent failure for missing
files.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">True</span></code> if the file was loaded successfully.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.config.Config.from_file">
<span class="sig-name descname"><span class="pre">from_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">PathLike</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">load</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">IO</span><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Mapping</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">silent</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">text</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#flask.config.Config.from_file" title="Link to this definition"></a></dt>
<dd><p>Update the values in the config from a file that is loaded
using the <code class="docutils literal notranslate"><span class="pre">load</span></code> parameter. The loaded data is passed to the
<a class="reference internal" href="#flask.config.Config.from_mapping" title="flask.config.Config.from_mapping"><code class="xref py py-meth docutils literal notranslate"><span class="pre">from_mapping()</span></code></a> method.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">json</span>
<span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">from_file</span><span class="p">(</span><span class="s2">&quot;config.json&quot;</span><span class="p">,</span> <span class="n">load</span><span class="o">=</span><span class="n">json</span><span class="o">.</span><span class="n">load</span><span class="p">)</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">tomllib</span>
<span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">from_file</span><span class="p">(</span><span class="s2">&quot;config.toml&quot;</span><span class="p">,</span> <span class="n">load</span><span class="o">=</span><span class="n">tomllib</span><span class="o">.</span><span class="n">load</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>filename</strong> The path to the data file. This can be an
absolute path or relative to the config root path.</p></li>
<li><p><strong>load</strong> (<code class="docutils literal notranslate"><span class="pre">Callable[[Reader],</span> <span class="pre">Mapping]</span></code> where <code class="docutils literal notranslate"><span class="pre">Reader</span></code>
implements a <code class="docutils literal notranslate"><span class="pre">read</span></code> method.) A callable that takes a file handle and returns a
mapping of loaded data from the file.</p></li>
<li><p><strong>silent</strong> Ignore the file if it doesnt exist.</p></li>
<li><p><strong>text</strong> Open the file in text or binary mode.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">True</span></code> if the file was loaded successfully.</p>
</dd>
</dl>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.3: </span>The <code class="docutils literal notranslate"><span class="pre">text</span></code> parameter was added.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 2.0.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.config.Config.from_mapping">
<span class="sig-name descname"><span class="pre">from_mapping</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mapping</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Mapping</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#flask.config.Config.from_mapping" title="Link to this definition"></a></dt>
<dd><p>Updates the config like <code class="xref py py-meth docutils literal notranslate"><span class="pre">update()</span></code> ignoring items with
non-upper keys.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>Always returns <code class="docutils literal notranslate"><span class="pre">True</span></code>.</p>
</dd>
</dl>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.11.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.config.Config.from_object">
<span class="sig-name descname"><span class="pre">from_object</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">obj</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">object</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#flask.config.Config.from_object" title="Link to this definition"></a></dt>
<dd><p>Updates the values from the given object. An object can be of one
of the following two types:</p>
<ul class="simple">
<li><p>a string: in this case the object with that name will be imported</p></li>
<li><p>an actual object reference: that object is used directly</p></li>
</ul>
<p>Objects are usually either modules or classes. <a class="reference internal" href="#flask.config.Config.from_object" title="flask.config.Config.from_object"><code class="xref py py-meth docutils literal notranslate"><span class="pre">from_object()</span></code></a>
loads only the uppercase attributes of the module/class. A <code class="docutils literal notranslate"><span class="pre">dict</span></code>
object will not work with <a class="reference internal" href="#flask.config.Config.from_object" title="flask.config.Config.from_object"><code class="xref py py-meth docutils literal notranslate"><span class="pre">from_object()</span></code></a> because the keys of a
<code class="docutils literal notranslate"><span class="pre">dict</span></code> are not attributes of the <code class="docutils literal notranslate"><span class="pre">dict</span></code> class.</p>
<p>Example of module-based configuration:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">from_object</span><span class="p">(</span><span class="s1">&#39;yourapplication.default_config&#39;</span><span class="p">)</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">yourapplication</span><span class="w"> </span><span class="kn">import</span> <span class="n">default_config</span>
<span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">from_object</span><span class="p">(</span><span class="n">default_config</span><span class="p">)</span>
</pre></div>
</div>
<p>Nothing is done to the object before loading. If the object is a
class and has <code class="docutils literal notranslate"><span class="pre">&#64;property</span></code> attributes, it needs to be
instantiated before being passed to this method.</p>
<p>You should not use this function to load the actual configuration but
rather configuration defaults. The actual config should be loaded
with <a class="reference internal" href="#flask.config.Config.from_pyfile" title="flask.config.Config.from_pyfile"><code class="xref py py-meth docutils literal notranslate"><span class="pre">from_pyfile()</span></code></a> and ideally from a location not within the
package because the package might be installed system wide.</p>
<p>See <span class="xref std std-ref">config-dev-prod</span> for an example of class-based configuration
using <a class="reference internal" href="#flask.config.Config.from_object" title="flask.config.Config.from_object"><code class="xref py py-meth docutils literal notranslate"><span class="pre">from_object()</span></code></a>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>obj</strong> an import name or object</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.config.Config.from_prefixed_env">
<span class="sig-name descname"><span class="pre">from_prefixed_env</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">prefix:</span> <span class="pre">str</span> <span class="pre">=</span> <span class="pre">'FLASK',</span> <span class="pre">*,</span> <span class="pre">loads:</span> <span class="pre">~typing.Callable[[str],</span> <span class="pre">~typing.Any]</span> <span class="pre">=</span> <span class="pre">&lt;function</span> <span class="pre">loads&gt;</span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#flask.config.Config.from_prefixed_env" title="Link to this definition"></a></dt>
<dd><p>Load any environment variables that start with <code class="docutils literal notranslate"><span class="pre">FLASK_</span></code>,
dropping the prefix from the env key for the config key. Values
are passed through a loading function to attempt to convert them
to more specific types than strings.</p>
<p>Keys are loaded in <code class="xref py py-func docutils literal notranslate"><span class="pre">sorted()</span></code> order.</p>
<p>The default loading function attempts to parse values as any
valid JSON type, including dicts and lists.</p>
<p>Specific items in nested dicts can be set by separating the
keys with double underscores (<code class="docutils literal notranslate"><span class="pre">__</span></code>). If an intermediate key
doesnt exist, it will be initialized to an empty dict.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>prefix</strong> Load env vars that start with this prefix,
separated with an underscore (<code class="docutils literal notranslate"><span class="pre">_</span></code>).</p></li>
<li><p><strong>loads</strong> Pass each string value to this function and use
the returned value as the config value. If any error is
raised it is ignored and the value remains a string. The
default is <code class="xref py py-func docutils literal notranslate"><span class="pre">json.loads()</span></code>.</p></li>
</ul>
</dd>
</dl>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 2.1.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.config.Config.from_pyfile">
<span class="sig-name descname"><span class="pre">from_pyfile</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">PathLike</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">silent</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#flask.config.Config.from_pyfile" title="Link to this definition"></a></dt>
<dd><p>Updates the values in the config from a Python file. This function
behaves as if the file was imported as module with the
<a class="reference internal" href="#flask.config.Config.from_object" title="flask.config.Config.from_object"><code class="xref py py-meth docutils literal notranslate"><span class="pre">from_object()</span></code></a> function.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>filename</strong> the filename of the config. This can either be an
absolute filename or a filename relative to the
root path.</p></li>
<li><p><strong>silent</strong> set to <code class="docutils literal notranslate"><span class="pre">True</span></code> if you want silent failure for missing
files.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">True</span></code> if the file was loaded successfully.</p>
</dd>
</dl>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.7: </span><cite>silent</cite> parameter.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.config.Config.get_namespace">
<span class="sig-name descname"><span class="pre">get_namespace</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">namespace</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lowercase</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">trim_namespace</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#flask.config.Config.get_namespace" title="Link to this definition"></a></dt>
<dd><p>Returns a dictionary containing a subset of configuration options
that match the specified namespace/prefix. Example usage:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;IMAGE_STORE_TYPE&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;fs&#39;</span>
<span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;IMAGE_STORE_PATH&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;/var/app/images&#39;</span>
<span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;IMAGE_STORE_BASE_URL&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;http://img.website.com&#39;</span>
<span class="n">image_store_config</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get_namespace</span><span class="p">(</span><span class="s1">&#39;IMAGE_STORE_&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>The resulting dictionary <cite>image_store_config</cite> would look like:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="s1">&#39;type&#39;</span><span class="p">:</span> <span class="s1">&#39;fs&#39;</span><span class="p">,</span>
<span class="s1">&#39;path&#39;</span><span class="p">:</span> <span class="s1">&#39;/var/app/images&#39;</span><span class="p">,</span>
<span class="s1">&#39;base_url&#39;</span><span class="p">:</span> <span class="s1">&#39;http://img.website.com&#39;</span>
<span class="p">}</span>
</pre></div>
</div>
<p>This is often useful when configuration options map directly to
keyword arguments in functions or class constructors.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>namespace</strong> a configuration namespace</p></li>
<li><p><strong>lowercase</strong> a flag indicating if the keys of the resulting
dictionary should be lowercase</p></li>
<li><p><strong>trim_namespace</strong> a flag indicating if the keys of the resulting
dictionary should not include the namespace</p></li>
</ul>
</dd>
</dl>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.11.</span></p>
</div>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="flask.config.ConfigAttribute">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.config.</span></span><span class="sig-name descname"><span class="pre">ConfigAttribute</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">get_converter</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">T</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.config.ConfigAttribute" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Generic</span></code>[<code class="xref py py-obj docutils literal notranslate"><span class="pre">T</span></code>]</p>
<p>Makes an attribute forward to the config</p>
</dd></dl>
</section>
<section id="module-flask.ctx">
<span id="flask-ctx-module"></span><h2>flask.ctx module<a class="headerlink" href="#module-flask.ctx" title="Link to this heading"></a></h2>
<dl class="py class">
<dt class="sig sig-object py" id="flask.ctx.AppContext">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.ctx.</span></span><span class="sig-name descname"><span class="pre">AppContext</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.ctx.AppContext" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>The app context contains application-specific information. An app
context is created and pushed at the beginning of each request if
one is not already active. An app context is also pushed when
running CLI commands.</p>
<dl class="py method">
<dt class="sig sig-object py" id="flask.ctx.AppContext.pop">
<span class="sig-name descname"><span class="pre">pop</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">exc:</span> <span class="pre">BaseException</span> <span class="pre">|</span> <span class="pre">None</span> <span class="pre">=</span> <span class="pre">&lt;object</span> <span class="pre">object&gt;</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#flask.ctx.AppContext.pop" title="Link to this definition"></a></dt>
<dd><p>Pops the app context.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.ctx.AppContext.push">
<span class="sig-name descname"><span class="pre">push</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#flask.ctx.AppContext.push" title="Link to this definition"></a></dt>
<dd><p>Binds the app context to the current context.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="flask.ctx.RequestContext">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.ctx.</span></span><span class="sig-name descname"><span class="pre">RequestContext</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">environ</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">WSGIEnvironment</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.wrappers.Request" title="flask.wrappers.Request"><span class="pre">Request</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">session</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.sessions.SessionMixin" title="flask.sessions.SessionMixin"><span class="pre">SessionMixin</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.ctx.RequestContext" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>The request context contains per-request information. The Flask
app creates and pushes it at the beginning of the request, then pops
it at the end of the request. It will create the URL adapter and
request object for the WSGI environment provided.</p>
<p>Do not attempt to use this class directly, instead use
<code class="xref py py-meth docutils literal notranslate"><span class="pre">test_request_context()</span></code> and
<code class="xref py py-meth docutils literal notranslate"><span class="pre">request_context()</span></code> to create this object.</p>
<p>When the request context is popped, it will evaluate all the
functions registered on the application for teardown execution
(<code class="xref py py-meth docutils literal notranslate"><span class="pre">teardown_request()</span></code>).</p>
<p>The request context is automatically popped at the end of the
request. When using the interactive debugger, the context will be
restored so <code class="docutils literal notranslate"><span class="pre">request</span></code> is still accessible. Similarly, the test
client can preserve the context after the request ends. However,
teardown functions may already have closed some resources such as
database connections.</p>
<dl class="py method">
<dt class="sig sig-object py" id="flask.ctx.RequestContext.copy">
<span class="sig-name descname"><span class="pre">copy</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.ctx.RequestContext" title="flask.ctx.RequestContext"><span class="pre">RequestContext</span></a></span></span><a class="headerlink" href="#flask.ctx.RequestContext.copy" title="Link to this definition"></a></dt>
<dd><p>Creates a copy of this request context with the same request object.
This can be used to move a request context to a different greenlet.
Because the actual request object is the same this cannot be used to
move a request context to a different thread unless access to the
request object is locked.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.10.</span></p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 1.1: </span>The current session object is used instead of reloading the original
data. This prevents <cite>flask.session</cite> pointing to an out-of-date object.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.ctx.RequestContext.match_request">
<span class="sig-name descname"><span class="pre">match_request</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#flask.ctx.RequestContext.match_request" title="Link to this definition"></a></dt>
<dd><p>Can be overridden by a subclass to hook into the matching
of the request.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.ctx.RequestContext.pop">
<span class="sig-name descname"><span class="pre">pop</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">exc:</span> <span class="pre">BaseException</span> <span class="pre">|</span> <span class="pre">None</span> <span class="pre">=</span> <span class="pre">&lt;object</span> <span class="pre">object&gt;</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#flask.ctx.RequestContext.pop" title="Link to this definition"></a></dt>
<dd><p>Pops the request context and unbinds it by doing that. This will
also trigger the execution of functions registered by the
<code class="xref py py-meth docutils literal notranslate"><span class="pre">teardown_request()</span></code> decorator.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.9: </span>Added the <cite>exc</cite> argument.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.ctx.RequestContext.push">
<span class="sig-name descname"><span class="pre">push</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#flask.ctx.RequestContext.push" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.ctx.after_this_request">
<span class="sig-prename descclassname"><span class="pre">flask.ctx.</span></span><span class="sig-name descname"><span class="pre">after_this_request</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">f</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Awaitable</span><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Awaitable</span><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#flask.ctx.after_this_request" title="Link to this definition"></a></dt>
<dd><p>Executes a function after this request. This is useful to modify
response objects. The function is passed the response object and has
to return the same or a new one.</p>
<p>Example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@app</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">index</span><span class="p">():</span>
<span class="nd">@after_this_request</span>
<span class="k">def</span><span class="w"> </span><span class="nf">add_header</span><span class="p">(</span><span class="n">response</span><span class="p">):</span>
<span class="n">response</span><span class="o">.</span><span class="n">headers</span><span class="p">[</span><span class="s1">&#39;X-Foo&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;Parachute&#39;</span>
<span class="k">return</span> <span class="n">response</span>
<span class="k">return</span> <span class="s1">&#39;Hello World!&#39;</span>
</pre></div>
</div>
<p>This is more useful if a function other than the view function wants to
modify a response. For instance think of a decorator that wants to add
some headers without converting the return value into a response object.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.9.</span></p>
</div>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.ctx.copy_current_request_context">
<span class="sig-prename descclassname"><span class="pre">flask.ctx.</span></span><span class="sig-name descname"><span class="pre">copy_current_request_context</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">f</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">F</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">F</span></span></span><a class="headerlink" href="#flask.ctx.copy_current_request_context" title="Link to this definition"></a></dt>
<dd><p>A helper function that decorates a function to retain the current
request context. This is useful when working with greenlets. The moment
the function is decorated a copy of the request context is created and
then pushed when the function is called. The current session is also
included in the copied request context.</p>
<p>Example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">gevent</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">flask</span><span class="w"> </span><span class="kn">import</span> <span class="n">copy_current_request_context</span>
<span class="nd">@app</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">index</span><span class="p">():</span>
<span class="nd">@copy_current_request_context</span>
<span class="k">def</span><span class="w"> </span><span class="nf">do_some_work</span><span class="p">():</span>
<span class="c1"># do some work here, it can access flask.request or</span>
<span class="c1"># flask.session like you would otherwise in the view function.</span>
<span class="o">...</span>
<span class="n">gevent</span><span class="o">.</span><span class="n">spawn</span><span class="p">(</span><span class="n">do_some_work</span><span class="p">)</span>
<span class="k">return</span> <span class="s1">&#39;Regular response&#39;</span>
</pre></div>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.10.</span></p>
</div>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.ctx.has_app_context">
<span class="sig-prename descclassname"><span class="pre">flask.ctx.</span></span><span class="sig-name descname"><span class="pre">has_app_context</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#flask.ctx.has_app_context" title="Link to this definition"></a></dt>
<dd><p>Works like <a class="reference internal" href="#flask.ctx.has_request_context" title="flask.ctx.has_request_context"><code class="xref py py-func docutils literal notranslate"><span class="pre">has_request_context()</span></code></a> but for the application
context. You can also just do a boolean check on the
<code class="xref py py-data docutils literal notranslate"><span class="pre">current_app</span></code> object instead.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.9.</span></p>
</div>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.ctx.has_request_context">
<span class="sig-prename descclassname"><span class="pre">flask.ctx.</span></span><span class="sig-name descname"><span class="pre">has_request_context</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#flask.ctx.has_request_context" title="Link to this definition"></a></dt>
<dd><p>If you have code that wants to test if a request context is there or
not this function can be used. For instance, you may want to take advantage
of request information if the request object is available, but fail
silently if it is unavailable.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">User</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">username</span><span class="p">,</span> <span class="n">remote_addr</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">username</span> <span class="o">=</span> <span class="n">username</span>
<span class="k">if</span> <span class="n">remote_addr</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">has_request_context</span><span class="p">():</span>
<span class="n">remote_addr</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">remote_addr</span>
<span class="bp">self</span><span class="o">.</span><span class="n">remote_addr</span> <span class="o">=</span> <span class="n">remote_addr</span>
</pre></div>
</div>
<p>Alternatively you can also just test any of the context bound objects
(such as <code class="xref py py-class docutils literal notranslate"><span class="pre">request</span></code> or <code class="xref py py-class docutils literal notranslate"><span class="pre">g</span></code>) for truthness:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">User</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">username</span><span class="p">,</span> <span class="n">remote_addr</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">username</span> <span class="o">=</span> <span class="n">username</span>
<span class="k">if</span> <span class="n">remote_addr</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">request</span><span class="p">:</span>
<span class="n">remote_addr</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">remote_addr</span>
<span class="bp">self</span><span class="o">.</span><span class="n">remote_addr</span> <span class="o">=</span> <span class="n">remote_addr</span>
</pre></div>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.7.</span></p>
</div>
</dd></dl>
</section>
<section id="module-flask.debughelpers">
<span id="flask-debughelpers-module"></span><h2>flask.debughelpers module<a class="headerlink" href="#module-flask.debughelpers" title="Link to this heading"></a></h2>
<dl class="py exception">
<dt class="sig sig-object py" id="flask.debughelpers.DebugFilesKeyError">
<em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.debughelpers.</span></span><span class="sig-name descname"><span class="pre">DebugFilesKeyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.wrappers.Request" title="flask.wrappers.Request"><span class="pre">Request</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">key</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.debughelpers.DebugFilesKeyError" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">KeyError</span></code>, <code class="xref py py-class docutils literal notranslate"><span class="pre">AssertionError</span></code></p>
<p>Raised from request.files during debugging. The idea is that it can
provide a better error message than just a generic KeyError/BadRequest.</p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="flask.debughelpers.FormDataRoutingRedirect">
<em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.debughelpers.</span></span><span class="sig-name descname"><span class="pre">FormDataRoutingRedirect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.wrappers.Request" title="flask.wrappers.Request"><span class="pre">Request</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.debughelpers.FormDataRoutingRedirect" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">AssertionError</span></code></p>
<p>This exception is raised in debug mode if a routing redirect
would cause the browser to drop the method or body. This happens
when method is not GET, HEAD or OPTIONS and the status code is not
307 or 308.</p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="flask.debughelpers.UnexpectedUnicodeError">
<em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.debughelpers.</span></span><span class="sig-name descname"><span class="pre">UnexpectedUnicodeError</span></span><a class="headerlink" href="#flask.debughelpers.UnexpectedUnicodeError" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">AssertionError</span></code>, <code class="xref py py-class docutils literal notranslate"><span class="pre">UnicodeError</span></code></p>
<p>Raised in places where we want some better error reporting for
unexpected unicode or binary data.</p>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.debughelpers.explain_template_loading_attempts">
<span class="sig-prename descclassname"><span class="pre">flask.debughelpers.</span></span><span class="sig-name descname"><span class="pre">explain_template_loading_attempts</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">App</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">template</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attempts</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">BaseLoader</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Scaffold</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">t.Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#flask.debughelpers.explain_template_loading_attempts" title="Link to this definition"></a></dt>
<dd><p>This should help developers understand what failed</p>
</dd></dl>
</section>
<section id="module-flask.globals">
<span id="flask-globals-module"></span><h2>flask.globals module<a class="headerlink" href="#module-flask.globals" title="Link to this heading"></a></h2>
</section>
<section id="module-flask.helpers">
<span id="flask-helpers-module"></span><h2>flask.helpers module<a class="headerlink" href="#module-flask.helpers" title="Link to this heading"></a></h2>
<dl class="py function">
<dt class="sig sig-object py" id="flask.helpers.abort">
<span class="sig-prename descclassname"><span class="pre">flask.helpers.</span></span><span class="sig-name descname"><span class="pre">abort</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">code</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Response</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">NoReturn</span></span></span><a class="headerlink" href="#flask.helpers.abort" title="Link to this definition"></a></dt>
<dd><p>Raise an <code class="xref py py-exc docutils literal notranslate"><span class="pre">HTTPException</span></code> for the given
status code.</p>
<p>If <code class="xref py py-data docutils literal notranslate"><span class="pre">current_app</span></code> is available, it will call its
<code class="xref py py-attr docutils literal notranslate"><span class="pre">aborter</span></code> object, otherwise it will use
<code class="xref py py-func docutils literal notranslate"><span class="pre">werkzeug.exceptions.abort()</span></code>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>code</strong> The status code for the exception, which must be
registered in <code class="docutils literal notranslate"><span class="pre">app.aborter</span></code>.</p></li>
<li><p><strong>args</strong> Passed to the exception.</p></li>
<li><p><strong>kwargs</strong> Passed to the exception.</p></li>
</ul>
</dd>
</dl>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 2.2: </span>Calls <code class="docutils literal notranslate"><span class="pre">current_app.aborter</span></code> if available instead of always
using Werkzeugs default <code class="docutils literal notranslate"><span class="pre">abort</span></code>.</p>
</div>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.helpers.flash">
<span class="sig-prename descclassname"><span class="pre">flask.helpers.</span></span><span class="sig-name descname"><span class="pre">flash</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">message</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">category</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'message'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#flask.helpers.flash" title="Link to this definition"></a></dt>
<dd><p>Flashes a message to the next request. In order to remove the
flashed message from the session and to display it to the user,
the template has to call <a class="reference internal" href="#flask.helpers.get_flashed_messages" title="flask.helpers.get_flashed_messages"><code class="xref py py-func docutils literal notranslate"><span class="pre">get_flashed_messages()</span></code></a>.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.3: </span><cite>category</cite> parameter added.</p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>message</strong> the message to be flashed.</p></li>
<li><p><strong>category</strong> the category for the message. The following values
are recommended: <code class="docutils literal notranslate"><span class="pre">'message'</span></code> for any kind of message,
<code class="docutils literal notranslate"><span class="pre">'error'</span></code> for errors, <code class="docutils literal notranslate"><span class="pre">'info'</span></code> for information
messages and <code class="docutils literal notranslate"><span class="pre">'warning'</span></code> for warnings. However any
kind of string can be used as category.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.helpers.get_debug_flag">
<span class="sig-prename descclassname"><span class="pre">flask.helpers.</span></span><span class="sig-name descname"><span class="pre">get_debug_flag</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#flask.helpers.get_debug_flag" title="Link to this definition"></a></dt>
<dd><p>Get whether debug mode should be enabled for the app, indicated by the
<span class="target" id="index-1"></span><code class="xref std std-envvar docutils literal notranslate"><span class="pre">FLASK_DEBUG</span></code> environment variable. The default is <code class="docutils literal notranslate"><span class="pre">False</span></code>.</p>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.helpers.get_flashed_messages">
<span class="sig-prename descclassname"><span class="pre">flask.helpers.</span></span><span class="sig-name descname"><span class="pre">get_flashed_messages</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">with_categories</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">category_filter</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Iterable</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">()</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#flask.helpers.get_flashed_messages" title="Link to this definition"></a></dt>
<dd><p>Pulls all flashed messages from the session and returns them.
Further calls in the same request to the function will return
the same messages. By default just the messages are returned,
but when <cite>with_categories</cite> is set to <code class="docutils literal notranslate"><span class="pre">True</span></code>, the return value will
be a list of tuples in the form <code class="docutils literal notranslate"><span class="pre">(category,</span> <span class="pre">message)</span></code> instead.</p>
<p>Filter the flashed messages to one or more categories by providing those
categories in <cite>category_filter</cite>. This allows rendering categories in
separate html blocks. The <cite>with_categories</cite> and <cite>category_filter</cite>
arguments are distinct:</p>
<ul class="simple">
<li><p><cite>with_categories</cite> controls whether categories are returned with message
text (<code class="docutils literal notranslate"><span class="pre">True</span></code> gives a tuple, where <code class="docutils literal notranslate"><span class="pre">False</span></code> gives just the message text).</p></li>
<li><p><cite>category_filter</cite> filters the messages down to only those matching the
provided categories.</p></li>
</ul>
<p>See <span class="xref std std-doc">/patterns/flashing</span> for examples.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.3: </span><cite>with_categories</cite> parameter added.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.9: </span><cite>category_filter</cite> parameter added.</p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>with_categories</strong> set to <code class="docutils literal notranslate"><span class="pre">True</span></code> to also receive categories.</p></li>
<li><p><strong>category_filter</strong> filter of categories to limit return values. Only
categories in the list will be returned.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.helpers.get_load_dotenv">
<span class="sig-prename descclassname"><span class="pre">flask.helpers.</span></span><span class="sig-name descname"><span class="pre">get_load_dotenv</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#flask.helpers.get_load_dotenv" title="Link to this definition"></a></dt>
<dd><p>Get whether the user has disabled loading default dotenv files by
setting <span class="target" id="index-2"></span><code class="xref std std-envvar docutils literal notranslate"><span class="pre">FLASK_SKIP_DOTENV</span></code>. The default is <code class="docutils literal notranslate"><span class="pre">True</span></code>, load
the files.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>default</strong> What to return if the env var isnt set.</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.helpers.get_template_attribute">
<span class="sig-prename descclassname"><span class="pre">flask.helpers.</span></span><span class="sig-name descname"><span class="pre">get_template_attribute</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">template_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attribute</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="headerlink" href="#flask.helpers.get_template_attribute" title="Link to this definition"></a></dt>
<dd><p>Loads a macro (or variable) a template exports. This can be used to
invoke a macro from within Python code. If you for example have a
template named <code class="file docutils literal notranslate"><span class="pre">_cider.html</span></code> with the following contents:</p>
<div class="highlight-html+jinja notranslate"><div class="highlight"><pre><span></span><span class="cp">{%</span> <span class="k">macro</span> <span class="nv">hello</span><span class="o">(</span><span class="nv">name</span><span class="o">)</span> <span class="cp">%}</span>Hello <span class="cp">{{</span> <span class="nv">name</span> <span class="cp">}}</span>!<span class="cp">{%</span> <span class="k">endmacro</span> <span class="cp">%}</span>
</pre></div>
</div>
<p>You can access this from Python code like this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">hello</span> <span class="o">=</span> <span class="n">get_template_attribute</span><span class="p">(</span><span class="s1">&#39;_cider.html&#39;</span><span class="p">,</span> <span class="s1">&#39;hello&#39;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">hello</span><span class="p">(</span><span class="s1">&#39;World&#39;</span><span class="p">)</span>
</pre></div>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.2.</span></p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>template_name</strong> the name of the template</p></li>
<li><p><strong>attribute</strong> the name of the variable of macro to access</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.helpers.make_response">
<span class="sig-prename descclassname"><span class="pre">flask.helpers.</span></span><span class="sig-name descname"><span class="pre">make_response</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">t.Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.wrappers.Response" title="flask.wrappers.Response"><span class="pre">Response</span></a></span></span><a class="headerlink" href="#flask.helpers.make_response" title="Link to this definition"></a></dt>
<dd><p>Sometimes it is necessary to set additional headers in a view. Because
views do not have to return response objects but can return a value that
is converted into a response object by Flask itself, it becomes tricky to
add headers to it. This function can be called instead of using a return
and you will get a response object which you can use to attach headers.</p>
<p>If view looked like this and you want to add a new header:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">def</span><span class="w"> </span><span class="nf">index</span><span class="p">():</span>
<span class="k">return</span> <span class="n">render_template</span><span class="p">(</span><span class="s1">&#39;index.html&#39;</span><span class="p">,</span> <span class="n">foo</span><span class="o">=</span><span class="mi">42</span><span class="p">)</span>
</pre></div>
</div>
<p>You can now do something like this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">def</span><span class="w"> </span><span class="nf">index</span><span class="p">():</span>
<span class="n">response</span> <span class="o">=</span> <span class="n">make_response</span><span class="p">(</span><span class="n">render_template</span><span class="p">(</span><span class="s1">&#39;index.html&#39;</span><span class="p">,</span> <span class="n">foo</span><span class="o">=</span><span class="mi">42</span><span class="p">))</span>
<span class="n">response</span><span class="o">.</span><span class="n">headers</span><span class="p">[</span><span class="s1">&#39;X-Parachutes&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;parachutes are cool&#39;</span>
<span class="k">return</span> <span class="n">response</span>
</pre></div>
</div>
<p>This function accepts the very same arguments you can return from a
view function. This for example creates a response with a 404 error
code:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">response</span> <span class="o">=</span> <span class="n">make_response</span><span class="p">(</span><span class="n">render_template</span><span class="p">(</span><span class="s1">&#39;not_found.html&#39;</span><span class="p">),</span> <span class="mi">404</span><span class="p">)</span>
</pre></div>
</div>
<p>The other use case of this function is to force the return value of a
view function into a response which is helpful with view
decorators:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">response</span> <span class="o">=</span> <span class="n">make_response</span><span class="p">(</span><span class="n">view_function</span><span class="p">())</span>
<span class="n">response</span><span class="o">.</span><span class="n">headers</span><span class="p">[</span><span class="s1">&#39;X-Parachutes&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;parachutes are cool&#39;</span>
</pre></div>
</div>
<p>Internally this function does the following things:</p>
<ul class="simple">
<li><p>if no arguments are passed, it creates a new response argument</p></li>
<li><p>if one argument is passed, <code class="xref py py-meth docutils literal notranslate"><span class="pre">flask.Flask.make_response()</span></code>
is invoked with it.</p></li>
<li><p>if more than one argument is passed, the arguments are passed
to the <code class="xref py py-meth docutils literal notranslate"><span class="pre">flask.Flask.make_response()</span></code> function as tuple.</p></li>
</ul>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.6.</span></p>
</div>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.helpers.redirect">
<span class="sig-prename descclassname"><span class="pre">flask.helpers.</span></span><span class="sig-name descname"><span class="pre">redirect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">location</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">code</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">302</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Response</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">type</span><span class="p"><span class="pre">[</span></span><span class="pre">Response</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Response</span></span></span><a class="headerlink" href="#flask.helpers.redirect" title="Link to this definition"></a></dt>
<dd><p>Create a redirect response object.</p>
<p>If <code class="xref py py-data docutils literal notranslate"><span class="pre">current_app</span></code> is available, it will use its
<code class="xref py py-meth docutils literal notranslate"><span class="pre">redirect()</span></code> method, otherwise it will use
<code class="xref py py-func docutils literal notranslate"><span class="pre">werkzeug.utils.redirect()</span></code>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>location</strong> The URL to redirect to.</p></li>
<li><p><strong>code</strong> The status code for the redirect.</p></li>
<li><p><strong>Response</strong> The response class to use. Not used when
<code class="docutils literal notranslate"><span class="pre">current_app</span></code> is active, which uses <code class="docutils literal notranslate"><span class="pre">app.response_class</span></code>.</p></li>
</ul>
</dd>
</dl>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 2.2: </span>Calls <code class="docutils literal notranslate"><span class="pre">current_app.redirect</span></code> if available instead of always
using Werkzeugs default <code class="docutils literal notranslate"><span class="pre">redirect</span></code>.</p>
</div>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.helpers.send_file">
<span class="sig-prename descclassname"><span class="pre">flask.helpers.</span></span><span class="sig-name descname"><span class="pre">send_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path_or_file</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">os.PathLike</span><span class="p"><span class="pre">[</span></span><span class="pre">t.AnyStr</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">t.BinaryIO</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">mimetype</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">as_attachment</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">download_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">conditional</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">etag</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">last_modified</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">datetime</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">float</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_age</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">None</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">t.Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.wrappers.Response" title="flask.wrappers.Response"><span class="pre">Response</span></a></span></span><a class="headerlink" href="#flask.helpers.send_file" title="Link to this definition"></a></dt>
<dd><p>Send the contents of a file to the client.</p>
<p>The first argument can be a file path or a file-like object. Paths
are preferred in most cases because Werkzeug can manage the file and
get extra information from the path. Passing a file-like object
requires that the file is opened in binary mode, and is mostly
useful when building a file in memory with <code class="xref py py-class docutils literal notranslate"><span class="pre">io.BytesIO</span></code>.</p>
<p>Never pass file paths provided by a user. The path is assumed to be
trusted, so a user could craft a path to access a file you didnt
intend. Use <a class="reference internal" href="#flask.helpers.send_from_directory" title="flask.helpers.send_from_directory"><code class="xref py py-func docutils literal notranslate"><span class="pre">send_from_directory()</span></code></a> to safely serve
user-requested paths from within a directory.</p>
<p>If the WSGI server sets a <code class="docutils literal notranslate"><span class="pre">file_wrapper</span></code> in <code class="docutils literal notranslate"><span class="pre">environ</span></code>, it is
used, otherwise Werkzeugs built-in wrapper is used. Alternatively,
if the HTTP server supports <code class="docutils literal notranslate"><span class="pre">X-Sendfile</span></code>, configuring Flask with
<code class="docutils literal notranslate"><span class="pre">USE_X_SENDFILE</span> <span class="pre">=</span> <span class="pre">True</span></code> will tell the server to send the given
path, which is much more efficient than reading it in Python.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>path_or_file</strong> The path to the file to send, relative to the
current working directory if a relative path is given.
Alternatively, a file-like object opened in binary mode. Make
sure the file pointer is seeked to the start of the data.</p></li>
<li><p><strong>mimetype</strong> The MIME type to send for the file. If not
provided, it will try to detect it from the file name.</p></li>
<li><p><strong>as_attachment</strong> Indicate to a browser that it should offer to
save the file instead of displaying it.</p></li>
<li><p><strong>download_name</strong> The default name browsers will use when saving
the file. Defaults to the passed file name.</p></li>
<li><p><strong>conditional</strong> Enable conditional and range responses based on
request headers. Requires passing a file path and <code class="docutils literal notranslate"><span class="pre">environ</span></code>.</p></li>
<li><p><strong>etag</strong> Calculate an ETag for the file, which requires passing
a file path. Can also be a string to use instead.</p></li>
<li><p><strong>last_modified</strong> The last modified time to send for the file,
in seconds. If not provided, it will try to detect it from the
file path.</p></li>
<li><p><strong>max_age</strong> How long the client should cache the file, in
seconds. If set, <code class="docutils literal notranslate"><span class="pre">Cache-Control</span></code> will be <code class="docutils literal notranslate"><span class="pre">public</span></code>, otherwise
it will be <code class="docutils literal notranslate"><span class="pre">no-cache</span></code> to prefer conditional caching.</p></li>
</ul>
</dd>
</dl>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.0: </span><code class="docutils literal notranslate"><span class="pre">download_name</span></code> replaces the <code class="docutils literal notranslate"><span class="pre">attachment_filename</span></code>
parameter. If <code class="docutils literal notranslate"><span class="pre">as_attachment=False</span></code>, it is passed with
<code class="docutils literal notranslate"><span class="pre">Content-Disposition:</span> <span class="pre">inline</span></code> instead.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.0: </span><code class="docutils literal notranslate"><span class="pre">max_age</span></code> replaces the <code class="docutils literal notranslate"><span class="pre">cache_timeout</span></code> parameter.
<code class="docutils literal notranslate"><span class="pre">conditional</span></code> is enabled and <code class="docutils literal notranslate"><span class="pre">max_age</span></code> is not set by
default.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.0: </span><code class="docutils literal notranslate"><span class="pre">etag</span></code> replaces the <code class="docutils literal notranslate"><span class="pre">add_etags</span></code> parameter. It can be a
string to use instead of generating one.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.0: </span>Passing a file-like object that inherits from
<code class="xref py py-class docutils literal notranslate"><span class="pre">TextIOBase</span></code> will raise a <code class="xref py py-exc docutils literal notranslate"><span class="pre">ValueError</span></code> rather
than sending an empty file.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 2.0: </span>Moved the implementation to Werkzeug. This is now a wrapper to
pass some Flask-specific arguments.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 1.1: </span><code class="docutils literal notranslate"><span class="pre">filename</span></code> may be a <code class="xref py py-class docutils literal notranslate"><span class="pre">PathLike</span></code> object.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 1.1: </span>Passing a <code class="xref py py-class docutils literal notranslate"><span class="pre">BytesIO</span></code> object supports range requests.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 1.0.3: </span>Filenames are encoded with ASCII instead of Latin-1 for broader
compatibility with WSGI servers.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 1.0: </span>UTF-8 filenames as specified in <span class="target" id="index-3"></span><a class="rfc reference external" href="https://datatracker.ietf.org/doc/html/rfc2231.html"><strong>RFC 2231</strong></a> are supported.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.12: </span>The filename is no longer automatically inferred from file
objects. If you want to use automatic MIME and etag support,
pass a filename via <code class="docutils literal notranslate"><span class="pre">filename_or_fp</span></code> or
<code class="docutils literal notranslate"><span class="pre">attachment_filename</span></code>.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.12: </span><code class="docutils literal notranslate"><span class="pre">attachment_filename</span></code> is preferred over <code class="docutils literal notranslate"><span class="pre">filename</span></code> for MIME
detection.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.9: </span><code class="docutils literal notranslate"><span class="pre">cache_timeout</span></code> defaults to
<code class="xref py py-meth docutils literal notranslate"><span class="pre">Flask.get_send_file_max_age()</span></code>.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.7: </span>MIME guessing and etag support for file-like objects was
removed because it was unreliable. Pass a filename if you are
able to, otherwise attach an etag yourself.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.5: </span>The <code class="docutils literal notranslate"><span class="pre">add_etags</span></code>, <code class="docutils literal notranslate"><span class="pre">cache_timeout</span></code> and <code class="docutils literal notranslate"><span class="pre">conditional</span></code>
parameters were added. The default behavior is to add etags.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.2.</span></p>
</div>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.helpers.send_from_directory">
<span class="sig-prename descclassname"><span class="pre">flask.helpers.</span></span><span class="sig-name descname"><span class="pre">send_from_directory</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">directory</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">os.PathLike</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">os.PathLike</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">t.Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.wrappers.Response" title="flask.wrappers.Response"><span class="pre">Response</span></a></span></span><a class="headerlink" href="#flask.helpers.send_from_directory" title="Link to this definition"></a></dt>
<dd><p>Send a file from within a directory using <a class="reference internal" href="#flask.helpers.send_file" title="flask.helpers.send_file"><code class="xref py py-func docutils literal notranslate"><span class="pre">send_file()</span></code></a>.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nd">@app</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/uploads/&lt;path:name&gt;&quot;</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">download_file</span><span class="p">(</span><span class="n">name</span><span class="p">):</span>
<span class="k">return</span> <span class="n">send_from_directory</span><span class="p">(</span>
<span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;UPLOAD_FOLDER&#39;</span><span class="p">],</span> <span class="n">name</span><span class="p">,</span> <span class="n">as_attachment</span><span class="o">=</span><span class="kc">True</span>
<span class="p">)</span>
</pre></div>
</div>
<p>This is a secure way to serve files from a folder, such as static
files or uploads. Uses <code class="xref py py-func docutils literal notranslate"><span class="pre">safe_join()</span></code> to
ensure the path coming from the client is not maliciously crafted to
point outside the specified directory.</p>
<p>If the final path does not point to an existing regular file,
raises a 404 <code class="xref py py-exc docutils literal notranslate"><span class="pre">NotFound</span></code> error.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>directory</strong> The directory that <code class="docutils literal notranslate"><span class="pre">path</span></code> must be located under,
relative to the current applications root path. This <em>must not</em>
be a value provided by the client, otherwise it becomes insecure.</p></li>
<li><p><strong>path</strong> The path to the file to send, relative to
<code class="docutils literal notranslate"><span class="pre">directory</span></code>.</p></li>
<li><p><strong>kwargs</strong> Arguments to pass to <a class="reference internal" href="#flask.helpers.send_file" title="flask.helpers.send_file"><code class="xref py py-func docutils literal notranslate"><span class="pre">send_file()</span></code></a>.</p></li>
</ul>
</dd>
</dl>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.0: </span><code class="docutils literal notranslate"><span class="pre">path</span></code> replaces the <code class="docutils literal notranslate"><span class="pre">filename</span></code> parameter.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 2.0: </span>Moved the implementation to Werkzeug. This is now a wrapper to
pass some Flask-specific arguments.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.5.</span></p>
</div>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.helpers.stream_with_context">
<span class="sig-prename descclassname"><span class="pre">flask.helpers.</span></span><span class="sig-name descname"><span class="pre">stream_with_context</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">generator_or_function</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Iterator</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Iterator</span></span></span><a class="headerlink" href="#flask.helpers.stream_with_context" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">flask.helpers.</span></span><span class="sig-name descname"><span class="pre">stream_with_context</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">generator_or_function</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Iterator</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">Iterator</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Iterator</span><span class="p"><span class="pre">]</span></span></span></span></dt>
<dd><p>Request contexts disappear when the response is started on the server.
This is done for efficiency reasons and to make it less likely to encounter
memory leaks with badly written WSGI middlewares. The downside is that if
you are using streamed responses, the generator cannot access request bound
information any more.</p>
<p>This function however can help you keep the context around for longer:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">flask</span><span class="w"> </span><span class="kn">import</span> <span class="n">stream_with_context</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">Response</span>
<span class="nd">@app</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s1">&#39;/stream&#39;</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">streamed_response</span><span class="p">():</span>
<span class="nd">@stream_with_context</span>
<span class="k">def</span><span class="w"> </span><span class="nf">generate</span><span class="p">():</span>
<span class="k">yield</span> <span class="s1">&#39;Hello &#39;</span>
<span class="k">yield</span> <span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">]</span>
<span class="k">yield</span> <span class="s1">&#39;!&#39;</span>
<span class="k">return</span> <span class="n">Response</span><span class="p">(</span><span class="n">generate</span><span class="p">())</span>
</pre></div>
</div>
<p>Alternatively it can also be used around a specific generator:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">flask</span><span class="w"> </span><span class="kn">import</span> <span class="n">stream_with_context</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">Response</span>
<span class="nd">@app</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s1">&#39;/stream&#39;</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">streamed_response</span><span class="p">():</span>
<span class="k">def</span><span class="w"> </span><span class="nf">generate</span><span class="p">():</span>
<span class="k">yield</span> <span class="s1">&#39;Hello &#39;</span>
<span class="k">yield</span> <span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">]</span>
<span class="k">yield</span> <span class="s1">&#39;!&#39;</span>
<span class="k">return</span> <span class="n">Response</span><span class="p">(</span><span class="n">stream_with_context</span><span class="p">(</span><span class="n">generate</span><span class="p">()))</span>
</pre></div>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.9.</span></p>
</div>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.helpers.url_for">
<span class="sig-prename descclassname"><span class="pre">flask.helpers.</span></span><span class="sig-name descname"><span class="pre">url_for</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">endpoint</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_anchor</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_method</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_scheme</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_external</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">values</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="headerlink" href="#flask.helpers.url_for" title="Link to this definition"></a></dt>
<dd><p>Generate a URL to the given endpoint with the given values.</p>
<p>This requires an active request or application context, and calls
<code class="xref py py-meth docutils literal notranslate"><span class="pre">current_app.url_for()</span></code>. See that method
for full documentation.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>endpoint</strong> The endpoint name associated with the URL to
generate. If this starts with a <code class="docutils literal notranslate"><span class="pre">.</span></code>, the current blueprint
name (if any) will be used.</p></li>
<li><p><strong>_anchor</strong> If given, append this as <code class="docutils literal notranslate"><span class="pre">#anchor</span></code> to the URL.</p></li>
<li><p><strong>_method</strong> If given, generate the URL associated with this
method for the endpoint.</p></li>
<li><p><strong>_scheme</strong> If given, the URL will have this scheme if it is
external.</p></li>
<li><p><strong>_external</strong> If given, prefer the URL to be internal (False) or
require it to be external (True). External URLs include the
scheme and domain. When not in an active request, URLs are
external by default.</p></li>
<li><p><strong>values</strong> Values to use for the variable parts of the URL rule.
Unknown keys are appended as query string arguments, like
<code class="docutils literal notranslate"><span class="pre">?a=b&amp;c=d</span></code>.</p></li>
</ul>
</dd>
</dl>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.2: </span>Calls <code class="docutils literal notranslate"><span class="pre">current_app.url_for</span></code>, allowing an app to override the
behavior.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.10: </span>The <code class="docutils literal notranslate"><span class="pre">_scheme</span></code> parameter was added.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.9: </span>The <code class="docutils literal notranslate"><span class="pre">_anchor</span></code> and <code class="docutils literal notranslate"><span class="pre">_method</span></code> parameters were added.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.9: </span>Calls <code class="docutils literal notranslate"><span class="pre">app.handle_url_build_error</span></code> on build errors.</p>
</div>
</dd></dl>
</section>
<section id="module-flask.logging">
<span id="flask-logging-module"></span><h2>flask.logging module<a class="headerlink" href="#module-flask.logging" title="Link to this heading"></a></h2>
<dl class="py function">
<dt class="sig sig-object py" id="flask.logging.create_logger">
<span class="sig-prename descclassname"><span class="pre">flask.logging.</span></span><span class="sig-name descname"><span class="pre">create_logger</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">App</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">logging.Logger</span></span></span><a class="headerlink" href="#flask.logging.create_logger" title="Link to this definition"></a></dt>
<dd><p>Get the Flask apps logger and configure it if needed.</p>
<p>The logger name will be the same as
<code class="xref py py-attr docutils literal notranslate"><span class="pre">app.import_name</span></code>.</p>
<p>When <code class="xref py py-attr docutils literal notranslate"><span class="pre">debug</span></code> is enabled, set the logger level to
<code class="xref py py-data docutils literal notranslate"><span class="pre">logging.DEBUG</span></code> if it is not set.</p>
<p>If there is no handler for the loggers effective level, add a
<code class="xref py py-class docutils literal notranslate"><span class="pre">StreamHandler</span></code> for
<code class="xref py py-func docutils literal notranslate"><span class="pre">wsgi_errors_stream()</span></code> with a basic format.</p>
</dd></dl>
<dl class="py data">
<dt class="sig sig-object py" id="flask.logging.default_handler">
<span class="sig-prename descclassname"><span class="pre">flask.logging.</span></span><span class="sig-name descname"><span class="pre">default_handler</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">&lt;StreamHandler</span> <span class="pre">&lt;stderr&gt;</span> <span class="pre">(NOTSET)&gt;</span></em><a class="headerlink" href="#flask.logging.default_handler" title="Link to this definition"></a></dt>
<dd><p>Log messages to <code class="xref py py-func docutils literal notranslate"><span class="pre">wsgi_errors_stream()</span></code> with the format
<code class="docutils literal notranslate"><span class="pre">[%(asctime)s]</span> <span class="pre">%(levelname)s</span> <span class="pre">in</span> <span class="pre">%(module)s:</span> <span class="pre">%(message)s</span></code>.</p>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.logging.has_level_handler">
<span class="sig-prename descclassname"><span class="pre">flask.logging.</span></span><span class="sig-name descname"><span class="pre">has_level_handler</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">logger</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Logger</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#flask.logging.has_level_handler" title="Link to this definition"></a></dt>
<dd><p>Check if there is a handler in the logging chain that will handle the
given loggers <code class="xref py py-meth docutils literal notranslate"><span class="pre">effective</span> <span class="pre">level</span></code>.</p>
</dd></dl>
</section>
<section id="module-flask.sessions">
<span id="flask-sessions-module"></span><h2>flask.sessions module<a class="headerlink" href="#module-flask.sessions" title="Link to this heading"></a></h2>
<dl class="py class">
<dt class="sig sig-object py" id="flask.sessions.NullSession">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.sessions.</span></span><span class="sig-name descname"><span class="pre">NullSession</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Mapping</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Iterable</span><span class="p"><span class="pre">[</span></span><span class="pre">tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.sessions.NullSession" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#flask.sessions.SecureCookieSession" title="flask.sessions.SecureCookieSession"><code class="xref py py-class docutils literal notranslate"><span class="pre">SecureCookieSession</span></code></a></p>
<p>Class used to generate nicer error messages if sessions are not
available. Will still allow read-only access to the empty session
but fail on setting.</p>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.NullSession.clear">
<span class="sig-name descname"><span class="pre">clear</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None.</span>&#160; <span class="pre">Remove</span> <span class="pre">all</span> <span class="pre">items</span> <span class="pre">from</span> <span class="pre">D.</span></span></span><a class="headerlink" href="#flask.sessions.NullSession.clear" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.NullSession.pop">
<span class="sig-name descname"><span class="pre">pop</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">k</span></span></em><span class="optional">[</span>, <em class="sig-param"><span class="n"><span class="pre">d</span></span></em><span class="optional">]</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">v,</span> <span class="pre">remove</span> <span class="pre">specified</span> <span class="pre">key</span> <span class="pre">and</span> <span class="pre">return</span> <span class="pre">the</span> <span class="pre">corresponding</span> <span class="pre">value.</span></span></span><a class="headerlink" href="#flask.sessions.NullSession.pop" title="Link to this definition"></a></dt>
<dd><p>If the key is not found, return the default if given; otherwise,
raise a KeyError.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.NullSession.popitem">
<span class="sig-name descname"><span class="pre">popitem</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">NoReturn</span></span></span><a class="headerlink" href="#flask.sessions.NullSession.popitem" title="Link to this definition"></a></dt>
<dd><p>Remove and return a (key, value) pair as a 2-tuple.</p>
<p>Pairs are returned in LIFO (last-in, first-out) order.
Raises KeyError if the dict is empty.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.NullSession.setdefault">
<span class="sig-name descname"><span class="pre">setdefault</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">NoReturn</span></span></span><a class="headerlink" href="#flask.sessions.NullSession.setdefault" title="Link to this definition"></a></dt>
<dd><p>Insert key with a value of default if key is not in the dictionary.</p>
<p>Return the value for key if key is in the dictionary, else default.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.NullSession.update">
<span class="sig-name descname"><span class="pre">update</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="n"><span class="pre">E</span></span></em>, <span class="optional">]</span><em class="sig-param"><span class="n"><span class="pre">**F</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None.</span>&#160; <span class="pre">Update</span> <span class="pre">D</span> <span class="pre">from</span> <span class="pre">dict/iterable</span> <span class="pre">E</span> <span class="pre">and</span> <span class="pre">F.</span></span></span><a class="headerlink" href="#flask.sessions.NullSession.update" title="Link to this definition"></a></dt>
<dd><p>If E is present and has a .keys() method, then does: for k in E: D[k] = E[k]
If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v
In either case, this is followed by: for k in F: D[k] = F[k]</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="flask.sessions.SecureCookieSession">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.sessions.</span></span><span class="sig-name descname"><span class="pre">SecureCookieSession</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Mapping</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Iterable</span><span class="p"><span class="pre">[</span></span><span class="pre">tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.sessions.SecureCookieSession" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">CallbackDict</span></code>[<code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code>, <code class="xref py py-obj docutils literal notranslate"><span class="pre">Any</span></code>], <a class="reference internal" href="#flask.sessions.SessionMixin" title="flask.sessions.SessionMixin"><code class="xref py py-class docutils literal notranslate"><span class="pre">SessionMixin</span></code></a></p>
<p>Base class for sessions based on signed cookies.</p>
<p>This session backend will set the <a class="reference internal" href="#flask.sessions.SecureCookieSession.modified" title="flask.sessions.SecureCookieSession.modified"><code class="xref py py-attr docutils literal notranslate"><span class="pre">modified</span></code></a> and
<a class="reference internal" href="#flask.sessions.SecureCookieSession.accessed" title="flask.sessions.SecureCookieSession.accessed"><code class="xref py py-attr docutils literal notranslate"><span class="pre">accessed</span></code></a> attributes. It cannot reliably track whether a
session is new (vs. empty), so <code class="xref py py-attr docutils literal notranslate"><span class="pre">new</span></code> remains hard coded to
<code class="docutils literal notranslate"><span class="pre">False</span></code>.</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.sessions.SecureCookieSession.accessed">
<span class="sig-name descname"><span class="pre">accessed</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="headerlink" href="#flask.sessions.SecureCookieSession.accessed" title="Link to this definition"></a></dt>
<dd><p>header, which allows caching proxies to cache different pages for
different users.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SecureCookieSession.get">
<span class="sig-name descname"><span class="pre">get</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">key</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="headerlink" href="#flask.sessions.SecureCookieSession.get" title="Link to this definition"></a></dt>
<dd><p>Return the value for key if key is in the dictionary, else default.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.sessions.SecureCookieSession.modified">
<span class="sig-name descname"><span class="pre">modified</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="headerlink" href="#flask.sessions.SecureCookieSession.modified" title="Link to this definition"></a></dt>
<dd><p>When data is changed, this is set to <code class="docutils literal notranslate"><span class="pre">True</span></code>. Only the session
dictionary itself is tracked; if the session contains mutable
data (for example a nested dict) then this must be set to
<code class="docutils literal notranslate"><span class="pre">True</span></code> manually when modifying that data. The session cookie
will only be written to the response if this is <code class="docutils literal notranslate"><span class="pre">True</span></code>.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SecureCookieSession.setdefault">
<span class="sig-name descname"><span class="pre">setdefault</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">key</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="headerlink" href="#flask.sessions.SecureCookieSession.setdefault" title="Link to this definition"></a></dt>
<dd><p>Insert key with a value of default if key is not in the dictionary.</p>
<p>Return the value for key if key is in the dictionary, else default.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="flask.sessions.SecureCookieSessionInterface">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.sessions.</span></span><span class="sig-name descname"><span class="pre">SecureCookieSessionInterface</span></span><a class="headerlink" href="#flask.sessions.SecureCookieSessionInterface" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#flask.sessions.SessionInterface" title="flask.sessions.SessionInterface"><code class="xref py py-class docutils literal notranslate"><span class="pre">SessionInterface</span></code></a></p>
<p>The default session interface that stores sessions in signed cookies
through the <code class="xref py py-mod docutils literal notranslate"><span class="pre">itsdangerous</span></code> module.</p>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SecureCookieSessionInterface.digest_method">
<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">digest_method</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">string</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bytes</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">b''</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="headerlink" href="#flask.sessions.SecureCookieSessionInterface.digest_method" title="Link to this definition"></a></dt>
<dd><p>the hash function to use for the signature. The default is sha1</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SecureCookieSessionInterface.get_signing_serializer">
<span class="sig-name descname"><span class="pre">get_signing_serializer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">URLSafeTimedSerializer</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="headerlink" href="#flask.sessions.SecureCookieSessionInterface.get_signing_serializer" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.sessions.SecureCookieSessionInterface.key_derivation">
<span class="sig-name descname"><span class="pre">key_derivation</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'hmac'</span></em><a class="headerlink" href="#flask.sessions.SecureCookieSessionInterface.key_derivation" title="Link to this definition"></a></dt>
<dd><p>the name of the itsdangerous supported key derivation. The default
is hmac.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SecureCookieSessionInterface.open_session">
<span class="sig-name descname"><span class="pre">open_session</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.wrappers.Request" title="flask.wrappers.Request"><span class="pre">Request</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.sessions.SecureCookieSession" title="flask.sessions.SecureCookieSession"><span class="pre">SecureCookieSession</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="headerlink" href="#flask.sessions.SecureCookieSessionInterface.open_session" title="Link to this definition"></a></dt>
<dd><p>This is called at the beginning of each request, after
pushing the request context, before matching the URL.</p>
<p>This must return an object which implements a dictionary-like
interface as well as the <a class="reference internal" href="#flask.sessions.SessionMixin" title="flask.sessions.SessionMixin"><code class="xref py py-class docutils literal notranslate"><span class="pre">SessionMixin</span></code></a> interface.</p>
<p>This will return <code class="docutils literal notranslate"><span class="pre">None</span></code> to indicate that loading failed in
some way that is not immediately an error. The request
context will fall back to using <code class="xref py py-meth docutils literal notranslate"><span class="pre">make_null_session()</span></code>
in this case.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.sessions.SecureCookieSessionInterface.salt">
<span class="sig-name descname"><span class="pre">salt</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'cookie-session'</span></em><a class="headerlink" href="#flask.sessions.SecureCookieSessionInterface.salt" title="Link to this definition"></a></dt>
<dd><p>the salt that should be applied on top of the secret key for the
signing of cookie based sessions.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SecureCookieSessionInterface.save_session">
<span class="sig-name descname"><span class="pre">save_session</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">session</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.sessions.SessionMixin" title="flask.sessions.SessionMixin"><span class="pre">SessionMixin</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">response</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.wrappers.Response" title="flask.wrappers.Response"><span class="pre">Response</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#flask.sessions.SecureCookieSessionInterface.save_session" title="Link to this definition"></a></dt>
<dd><p>This is called at the end of each request, after generating
a response, before removing the request context. It is skipped
if <code class="xref py py-meth docutils literal notranslate"><span class="pre">is_null_session()</span></code> returns <code class="docutils literal notranslate"><span class="pre">True</span></code>.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.sessions.SecureCookieSessionInterface.serializer">
<span class="sig-name descname"><span class="pre">serializer</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">&lt;flask.json.tag.TaggedJSONSerializer</span> <span class="pre">object&gt;</span></em><a class="headerlink" href="#flask.sessions.SecureCookieSessionInterface.serializer" title="Link to this definition"></a></dt>
<dd><p>A python serializer for the payload. The default is a compact
JSON derived serializer with support for some extra Python types
such as datetime objects or tuples.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.sessions.SecureCookieSessionInterface.session_class">
<span class="sig-name descname"><span class="pre">session_class</span></span><a class="headerlink" href="#flask.sessions.SecureCookieSessionInterface.session_class" title="Link to this definition"></a></dt>
<dd><p>alias of <a class="reference internal" href="#flask.sessions.SecureCookieSession" title="flask.sessions.SecureCookieSession"><code class="xref py py-class docutils literal notranslate"><span class="pre">SecureCookieSession</span></code></a></p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="flask.sessions.SessionInterface">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.sessions.</span></span><span class="sig-name descname"><span class="pre">SessionInterface</span></span><a class="headerlink" href="#flask.sessions.SessionInterface" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>The basic interface you have to implement in order to replace the
default session interface which uses werkzeugs securecookie
implementation. The only methods you have to implement are
<a class="reference internal" href="#flask.sessions.SessionInterface.open_session" title="flask.sessions.SessionInterface.open_session"><code class="xref py py-meth docutils literal notranslate"><span class="pre">open_session()</span></code></a> and <a class="reference internal" href="#flask.sessions.SessionInterface.save_session" title="flask.sessions.SessionInterface.save_session"><code class="xref py py-meth docutils literal notranslate"><span class="pre">save_session()</span></code></a>, the others have
useful defaults which you dont need to change.</p>
<p>The session object returned by the <a class="reference internal" href="#flask.sessions.SessionInterface.open_session" title="flask.sessions.SessionInterface.open_session"><code class="xref py py-meth docutils literal notranslate"><span class="pre">open_session()</span></code></a> method has to
provide a dictionary like interface plus the properties and methods
from the <a class="reference internal" href="#flask.sessions.SessionMixin" title="flask.sessions.SessionMixin"><code class="xref py py-class docutils literal notranslate"><span class="pre">SessionMixin</span></code></a>. We recommend just subclassing a dict
and adding that mixin:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Session</span><span class="p">(</span><span class="nb">dict</span><span class="p">,</span> <span class="n">SessionMixin</span><span class="p">):</span>
<span class="k">pass</span>
</pre></div>
</div>
<p>If <a class="reference internal" href="#flask.sessions.SessionInterface.open_session" title="flask.sessions.SessionInterface.open_session"><code class="xref py py-meth docutils literal notranslate"><span class="pre">open_session()</span></code></a> returns <code class="docutils literal notranslate"><span class="pre">None</span></code> Flask will call into
<a class="reference internal" href="#flask.sessions.SessionInterface.make_null_session" title="flask.sessions.SessionInterface.make_null_session"><code class="xref py py-meth docutils literal notranslate"><span class="pre">make_null_session()</span></code></a> to create a session that acts as replacement
if the session support cannot work because some requirement is not
fulfilled. The default <a class="reference internal" href="#flask.sessions.NullSession" title="flask.sessions.NullSession"><code class="xref py py-class docutils literal notranslate"><span class="pre">NullSession</span></code></a> class that is created
will complain that the secret key was not set.</p>
<p>To replace the session interface on an application all you have to do
is to assign <code class="xref py py-attr docutils literal notranslate"><span class="pre">flask.Flask.session_interface</span></code>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">app</span> <span class="o">=</span> <span class="n">Flask</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
<span class="n">app</span><span class="o">.</span><span class="n">session_interface</span> <span class="o">=</span> <span class="n">MySessionInterface</span><span class="p">()</span>
</pre></div>
</div>
<p>Multiple requests with the same session may be sent and handled
concurrently. When implementing a new session interface, consider
whether reads or writes to the backing store must be synchronized.
There is no guarantee on the order in which the session for each
request is opened or saved, it will occur in the order that requests
begin and end processing.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.8.</span></p>
</div>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SessionInterface.get_cookie_domain">
<span class="sig-name descname"><span class="pre">get_cookie_domain</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="headerlink" href="#flask.sessions.SessionInterface.get_cookie_domain" title="Link to this definition"></a></dt>
<dd><p>The value of the <code class="docutils literal notranslate"><span class="pre">Domain</span></code> parameter on the session cookie. If not set,
browsers will only send the cookie to the exact domain it was set from.
Otherwise, they will send it to any subdomain of the given value as well.</p>
<p>Uses the <code class="xref py py-data docutils literal notranslate"><span class="pre">SESSION_COOKIE_DOMAIN</span></code> config.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.3: </span>Not set by default, does not fall back to <code class="docutils literal notranslate"><span class="pre">SERVER_NAME</span></code>.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SessionInterface.get_cookie_httponly">
<span class="sig-name descname"><span class="pre">get_cookie_httponly</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#flask.sessions.SessionInterface.get_cookie_httponly" title="Link to this definition"></a></dt>
<dd><p>Returns True if the session cookie should be httponly. This
currently just returns the value of the <code class="docutils literal notranslate"><span class="pre">SESSION_COOKIE_HTTPONLY</span></code>
config var.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SessionInterface.get_cookie_name">
<span class="sig-name descname"><span class="pre">get_cookie_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="headerlink" href="#flask.sessions.SessionInterface.get_cookie_name" title="Link to this definition"></a></dt>
<dd><p>The name of the session cookie. Uses``app.config[“SESSION_COOKIE_NAME”]``.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SessionInterface.get_cookie_partitioned">
<span class="sig-name descname"><span class="pre">get_cookie_partitioned</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#flask.sessions.SessionInterface.get_cookie_partitioned" title="Link to this definition"></a></dt>
<dd><p>Returns True if the cookie should be partitioned. By default, uses
the value of <code class="xref py py-data docutils literal notranslate"><span class="pre">SESSION_COOKIE_PARTITIONED</span></code>.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 3.1.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SessionInterface.get_cookie_path">
<span class="sig-name descname"><span class="pre">get_cookie_path</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="headerlink" href="#flask.sessions.SessionInterface.get_cookie_path" title="Link to this definition"></a></dt>
<dd><p>Returns the path for which the cookie should be valid. The
default implementation uses the value from the <code class="docutils literal notranslate"><span class="pre">SESSION_COOKIE_PATH</span></code>
config var if its set, and falls back to <code class="docutils literal notranslate"><span class="pre">APPLICATION_ROOT</span></code> or
uses <code class="docutils literal notranslate"><span class="pre">/</span></code> if its <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SessionInterface.get_cookie_samesite">
<span class="sig-name descname"><span class="pre">get_cookie_samesite</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="headerlink" href="#flask.sessions.SessionInterface.get_cookie_samesite" title="Link to this definition"></a></dt>
<dd><p>Return <code class="docutils literal notranslate"><span class="pre">'Strict'</span></code> or <code class="docutils literal notranslate"><span class="pre">'Lax'</span></code> if the cookie should use the
<code class="docutils literal notranslate"><span class="pre">SameSite</span></code> attribute. This currently just returns the value of
the <code class="xref py py-data docutils literal notranslate"><span class="pre">SESSION_COOKIE_SAMESITE</span></code> setting.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SessionInterface.get_cookie_secure">
<span class="sig-name descname"><span class="pre">get_cookie_secure</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#flask.sessions.SessionInterface.get_cookie_secure" title="Link to this definition"></a></dt>
<dd><p>Returns True if the cookie should be secure. This currently
just returns the value of the <code class="docutils literal notranslate"><span class="pre">SESSION_COOKIE_SECURE</span></code> setting.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SessionInterface.get_expiration_time">
<span class="sig-name descname"><span class="pre">get_expiration_time</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">session</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.sessions.SessionMixin" title="flask.sessions.SessionMixin"><span class="pre">SessionMixin</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">datetime</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="headerlink" href="#flask.sessions.SessionInterface.get_expiration_time" title="Link to this definition"></a></dt>
<dd><p>A helper method that returns an expiration date for the session
or <code class="docutils literal notranslate"><span class="pre">None</span></code> if the session is linked to the browser session. The
default implementation returns now + the permanent session
lifetime configured on the application.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SessionInterface.is_null_session">
<span class="sig-name descname"><span class="pre">is_null_session</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">obj</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">object</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#flask.sessions.SessionInterface.is_null_session" title="Link to this definition"></a></dt>
<dd><p>Checks if a given object is a null session. Null sessions are
not asked to be saved.</p>
<p>This checks if the object is an instance of <a class="reference internal" href="#flask.sessions.SessionInterface.null_session_class" title="flask.sessions.SessionInterface.null_session_class"><code class="xref py py-attr docutils literal notranslate"><span class="pre">null_session_class</span></code></a>
by default.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SessionInterface.make_null_session">
<span class="sig-name descname"><span class="pre">make_null_session</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.sessions.NullSession" title="flask.sessions.NullSession"><span class="pre">NullSession</span></a></span></span><a class="headerlink" href="#flask.sessions.SessionInterface.make_null_session" title="Link to this definition"></a></dt>
<dd><p>Creates a null session which acts as a replacement object if the
real session support could not be loaded due to a configuration
error. This mainly aids the user experience because the job of the
null session is to still support lookup without complaining but
modifications are answered with a helpful error message of what
failed.</p>
<p>This creates an instance of <a class="reference internal" href="#flask.sessions.SessionInterface.null_session_class" title="flask.sessions.SessionInterface.null_session_class"><code class="xref py py-attr docutils literal notranslate"><span class="pre">null_session_class</span></code></a> by default.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.sessions.SessionInterface.null_session_class">
<span class="sig-name descname"><span class="pre">null_session_class</span></span><a class="headerlink" href="#flask.sessions.SessionInterface.null_session_class" title="Link to this definition"></a></dt>
<dd><p><a class="reference internal" href="#flask.sessions.SessionInterface.make_null_session" title="flask.sessions.SessionInterface.make_null_session"><code class="xref py py-meth docutils literal notranslate"><span class="pre">make_null_session()</span></code></a> will look here for the class that should
be created when a null session is requested. Likewise the
<a class="reference internal" href="#flask.sessions.SessionInterface.is_null_session" title="flask.sessions.SessionInterface.is_null_session"><code class="xref py py-meth docutils literal notranslate"><span class="pre">is_null_session()</span></code></a> method will perform a typecheck against
this type.</p>
<p>alias of <a class="reference internal" href="#flask.sessions.NullSession" title="flask.sessions.NullSession"><code class="xref py py-class docutils literal notranslate"><span class="pre">NullSession</span></code></a></p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SessionInterface.open_session">
<span class="sig-name descname"><span class="pre">open_session</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.wrappers.Request" title="flask.wrappers.Request"><span class="pre">Request</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#flask.sessions.SessionMixin" title="flask.sessions.SessionMixin"><span class="pre">SessionMixin</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="headerlink" href="#flask.sessions.SessionInterface.open_session" title="Link to this definition"></a></dt>
<dd><p>This is called at the beginning of each request, after
pushing the request context, before matching the URL.</p>
<p>This must return an object which implements a dictionary-like
interface as well as the <a class="reference internal" href="#flask.sessions.SessionMixin" title="flask.sessions.SessionMixin"><code class="xref py py-class docutils literal notranslate"><span class="pre">SessionMixin</span></code></a> interface.</p>
<p>This will return <code class="docutils literal notranslate"><span class="pre">None</span></code> to indicate that loading failed in
some way that is not immediately an error. The request
context will fall back to using <a class="reference internal" href="#flask.sessions.SessionInterface.make_null_session" title="flask.sessions.SessionInterface.make_null_session"><code class="xref py py-meth docutils literal notranslate"><span class="pre">make_null_session()</span></code></a>
in this case.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.sessions.SessionInterface.pickle_based">
<span class="sig-name descname"><span class="pre">pickle_based</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="headerlink" href="#flask.sessions.SessionInterface.pickle_based" title="Link to this definition"></a></dt>
<dd><p>A flag that indicates if the session interface is pickle based.
This can be used by Flask extensions to make a decision in regards
to how to deal with the session object.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.10.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SessionInterface.save_session">
<span class="sig-name descname"><span class="pre">save_session</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">session</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.sessions.SessionMixin" title="flask.sessions.SessionMixin"><span class="pre">SessionMixin</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">response</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.wrappers.Response" title="flask.wrappers.Response"><span class="pre">Response</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#flask.sessions.SessionInterface.save_session" title="Link to this definition"></a></dt>
<dd><p>This is called at the end of each request, after generating
a response, before removing the request context. It is skipped
if <a class="reference internal" href="#flask.sessions.SessionInterface.is_null_session" title="flask.sessions.SessionInterface.is_null_session"><code class="xref py py-meth docutils literal notranslate"><span class="pre">is_null_session()</span></code></a> returns <code class="docutils literal notranslate"><span class="pre">True</span></code>.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.sessions.SessionInterface.should_set_cookie">
<span class="sig-name descname"><span class="pre">should_set_cookie</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">session</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.sessions.SessionMixin" title="flask.sessions.SessionMixin"><span class="pre">SessionMixin</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#flask.sessions.SessionInterface.should_set_cookie" title="Link to this definition"></a></dt>
<dd><p>Used by session backends to determine if a <code class="docutils literal notranslate"><span class="pre">Set-Cookie</span></code> header
should be set for this session cookie for this response. If the session
has been modified, the cookie is set. If the session is permanent and
the <code class="docutils literal notranslate"><span class="pre">SESSION_REFRESH_EACH_REQUEST</span></code> config is true, the cookie is
always set.</p>
<p>This check is usually skipped if the session was deleted.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.11.</span></p>
</div>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="flask.sessions.SessionMixin">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.sessions.</span></span><span class="sig-name descname"><span class="pre">SessionMixin</span></span><a class="headerlink" href="#flask.sessions.SessionMixin" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">MutableMapping</span></code>[<code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code>, <code class="xref py py-obj docutils literal notranslate"><span class="pre">Any</span></code>]</p>
<p>Expands a basic dictionary with session attributes.</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.sessions.SessionMixin.accessed">
<span class="sig-name descname"><span class="pre">accessed</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="headerlink" href="#flask.sessions.SessionMixin.accessed" title="Link to this definition"></a></dt>
<dd><p>Some implementations can detect when session data is read or
written and set this when that happens. The mixin default is hard
coded to <code class="docutils literal notranslate"><span class="pre">True</span></code>.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.sessions.SessionMixin.modified">
<span class="sig-name descname"><span class="pre">modified</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="headerlink" href="#flask.sessions.SessionMixin.modified" title="Link to this definition"></a></dt>
<dd><p>Some implementations can detect changes to the session and set
this when that happens. The mixin default is hard coded to
<code class="docutils literal notranslate"><span class="pre">True</span></code>.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.sessions.SessionMixin.new">
<span class="sig-name descname"><span class="pre">new</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="headerlink" href="#flask.sessions.SessionMixin.new" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="flask.sessions.SessionMixin.permanent">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">permanent</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><a class="headerlink" href="#flask.sessions.SessionMixin.permanent" title="Link to this definition"></a></dt>
<dd><p>This reflects the <code class="docutils literal notranslate"><span class="pre">'_permanent'</span></code> key in the dict.</p>
</dd></dl>
</dd></dl>
</section>
<section id="module-flask.signals">
<span id="flask-signals-module"></span><h2>flask.signals module<a class="headerlink" href="#module-flask.signals" title="Link to this heading"></a></h2>
</section>
<section id="module-flask.templating">
<span id="flask-templating-module"></span><h2>flask.templating module<a class="headerlink" href="#module-flask.templating" title="Link to this heading"></a></h2>
<dl class="py class">
<dt class="sig sig-object py" id="flask.templating.DispatchingJinjaLoader">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.templating.</span></span><span class="sig-name descname"><span class="pre">DispatchingJinjaLoader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">App</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.templating.DispatchingJinjaLoader" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseLoader</span></code></p>
<p>A loader that looks for templates in the application and all
the blueprint folders.</p>
<dl class="py method">
<dt class="sig sig-object py" id="flask.templating.DispatchingJinjaLoader.get_source">
<span class="sig-name descname"><span class="pre">get_source</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">environment</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Environment</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">template</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#flask.templating.DispatchingJinjaLoader.get_source" title="Link to this definition"></a></dt>
<dd><p>Get the template source, filename and reload helper for a template.
Its passed the environment and template name and has to return a
tuple in the form <code class="docutils literal notranslate"><span class="pre">(source,</span> <span class="pre">filename,</span> <span class="pre">uptodate)</span></code> or raise a
<cite>TemplateNotFound</cite> error if it cant locate the template.</p>
<p>The source part of the returned tuple must be the source of the
template as a string. The filename should be the name of the
file on the filesystem if it was loaded from there, otherwise
<code class="docutils literal notranslate"><span class="pre">None</span></code>. The filename is used by Python for the tracebacks
if no loader extension is used.</p>
<p>The last item in the tuple is the <cite>uptodate</cite> function. If auto
reloading is enabled its always called to check if the template
changed. No arguments are passed so the function must store the
old state somewhere (for example in a closure). If it returns <cite>False</cite>
the template will be reloaded.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.templating.DispatchingJinjaLoader.list_templates">
<span class="sig-name descname"><span class="pre">list_templates</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#flask.templating.DispatchingJinjaLoader.list_templates" title="Link to this definition"></a></dt>
<dd><p>Iterates over all templates. If the loader does not support that
it should raise a <code class="xref py py-exc docutils literal notranslate"><span class="pre">TypeError</span></code> which is the default behavior.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="flask.templating.Environment">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.templating.</span></span><span class="sig-name descname"><span class="pre">Environment</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">App</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">options</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">t.Any</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.templating.Environment" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Environment</span></code></p>
<p>Works like a regular Jinja2 environment but has some additional
knowledge of how Flasks blueprint works so that it can prepend the
name of the blueprint to referenced templates if necessary.</p>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.templating.render_template">
<span class="sig-prename descclassname"><span class="pre">flask.templating.</span></span><span class="sig-name descname"><span class="pre">render_template</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">template_name_or_list</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Template</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Template</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">context</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="headerlink" href="#flask.templating.render_template" title="Link to this definition"></a></dt>
<dd><p>Render a template by name with the given context.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>template_name_or_list</strong> The name of the template to render. If
a list is given, the first name to exist will be rendered.</p></li>
<li><p><strong>context</strong> The variables to make available in the template.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.templating.render_template_string">
<span class="sig-prename descclassname"><span class="pre">flask.templating.</span></span><span class="sig-name descname"><span class="pre">render_template_string</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">source</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">context</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="headerlink" href="#flask.templating.render_template_string" title="Link to this definition"></a></dt>
<dd><p>Render a template from the given source string with the given
context.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>source</strong> The source code of the template to render.</p></li>
<li><p><strong>context</strong> The variables to make available in the template.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.templating.stream_template">
<span class="sig-prename descclassname"><span class="pre">flask.templating.</span></span><span class="sig-name descname"><span class="pre">stream_template</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">template_name_or_list</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Template</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Template</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">context</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Iterator</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#flask.templating.stream_template" title="Link to this definition"></a></dt>
<dd><p>Render a template by name with the given context as a stream.
This returns an iterator of strings, which can be used as a
streaming response from a view.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>template_name_or_list</strong> The name of the template to render. If
a list is given, the first name to exist will be rendered.</p></li>
<li><p><strong>context</strong> The variables to make available in the template.</p></li>
</ul>
</dd>
</dl>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 2.2.</span></p>
</div>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="flask.templating.stream_template_string">
<span class="sig-prename descclassname"><span class="pre">flask.templating.</span></span><span class="sig-name descname"><span class="pre">stream_template_string</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">source</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">context</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Iterator</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#flask.templating.stream_template_string" title="Link to this definition"></a></dt>
<dd><p>Render a template from the given source string with the given
context as a stream. This returns an iterator of strings, which can
be used as a streaming response from a view.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>source</strong> The source code of the template to render.</p></li>
<li><p><strong>context</strong> The variables to make available in the template.</p></li>
</ul>
</dd>
</dl>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 2.2.</span></p>
</div>
</dd></dl>
</section>
<section id="module-flask.testing">
<span id="flask-testing-module"></span><h2>flask.testing module<a class="headerlink" href="#module-flask.testing" title="Link to this heading"></a></h2>
<dl class="py class">
<dt class="sig sig-object py" id="flask.testing.EnvironBuilder">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.testing.</span></span><span class="sig-name descname"><span class="pre">EnvironBuilder</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'/'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">subdomain</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">url_scheme</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">t.Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">t.Any</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.testing.EnvironBuilder" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">EnvironBuilder</span></code></p>
<p>An <code class="xref py py-class docutils literal notranslate"><span class="pre">EnvironBuilder</span></code>, that takes defaults from the
application.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>app</strong> The Flask application to configure the environment from.</p></li>
<li><p><strong>path</strong> URL path being requested.</p></li>
<li><p><strong>base_url</strong> Base URL where the app is being served, which
<code class="docutils literal notranslate"><span class="pre">path</span></code> is relative to. If not given, built from
<code class="xref py py-data docutils literal notranslate"><span class="pre">PREFERRED_URL_SCHEME</span></code>, <code class="docutils literal notranslate"><span class="pre">subdomain</span></code>,
<code class="xref py py-data docutils literal notranslate"><span class="pre">SERVER_NAME</span></code>, and <code class="xref py py-data docutils literal notranslate"><span class="pre">APPLICATION_ROOT</span></code>.</p></li>
<li><p><strong>subdomain</strong> Subdomain name to append to <code class="xref py py-data docutils literal notranslate"><span class="pre">SERVER_NAME</span></code>.</p></li>
<li><p><strong>url_scheme</strong> Scheme to use instead of
<code class="xref py py-data docutils literal notranslate"><span class="pre">PREFERRED_URL_SCHEME</span></code>.</p></li>
<li><p><strong>json</strong> If given, this is serialized as JSON and passed as
<code class="docutils literal notranslate"><span class="pre">data</span></code>. Also defaults <code class="docutils literal notranslate"><span class="pre">content_type</span></code> to
<code class="docutils literal notranslate"><span class="pre">application/json</span></code>.</p></li>
<li><p><strong>args</strong> other positional arguments passed to
<code class="xref py py-class docutils literal notranslate"><span class="pre">EnvironBuilder</span></code>.</p></li>
<li><p><strong>kwargs</strong> other keyword arguments passed to
<code class="xref py py-class docutils literal notranslate"><span class="pre">EnvironBuilder</span></code>.</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.testing.EnvironBuilder.json_dumps">
<span class="sig-name descname"><span class="pre">json_dumps</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">obj</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="headerlink" href="#flask.testing.EnvironBuilder.json_dumps" title="Link to this definition"></a></dt>
<dd><p>Serialize <code class="docutils literal notranslate"><span class="pre">obj</span></code> to a JSON-formatted string.</p>
<p>The serialization will be configured according to the config associated
with this EnvironBuilders <code class="docutils literal notranslate"><span class="pre">app</span></code>.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="flask.testing.FlaskCliRunner">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.testing.</span></span><span class="sig-name descname"><span class="pre">FlaskCliRunner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">t.Any</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.testing.FlaskCliRunner" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">CliRunner</span></code></p>
<p>A <code class="xref py py-class docutils literal notranslate"><span class="pre">CliRunner</span></code> for testing a Flask apps
CLI commands. Typically created using
<code class="xref py py-meth docutils literal notranslate"><span class="pre">test_cli_runner()</span></code>. See <span class="xref std std-ref">testing-cli</span>.</p>
<dl class="py method">
<dt class="sig sig-object py" id="flask.testing.FlaskCliRunner.invoke">
<span class="sig-name descname"><span class="pre">invoke</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cli</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Result</span></span></span><a class="headerlink" href="#flask.testing.FlaskCliRunner.invoke" title="Link to this definition"></a></dt>
<dd><p>Invokes a CLI command in an isolated environment. See
<code class="xref py py-meth docutils literal notranslate"><span class="pre">CliRunner.invoke</span></code> for
full method documentation. See <span class="xref std std-ref">testing-cli</span> for examples.</p>
<p>If the <code class="docutils literal notranslate"><span class="pre">obj</span></code> argument is not given, passes an instance of
<a class="reference internal" href="#flask.cli.ScriptInfo" title="flask.cli.ScriptInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">ScriptInfo</span></code></a> that knows how to load the Flask
app being tested.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>cli</strong> Command object to invoke. Default is the apps
<a class="reference internal" href="#flask.app.Flask.cli" title="flask.app.Flask.cli"><code class="xref py py-attr docutils literal notranslate"><span class="pre">cli</span></code></a> group.</p></li>
<li><p><strong>args</strong> List of strings to invoke the command with.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>a <code class="xref py py-class docutils literal notranslate"><span class="pre">Result</span></code> object.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="flask.testing.FlaskClient">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.testing.</span></span><span class="sig-name descname"><span class="pre">FlaskClient</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.testing.FlaskClient" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Client</span></code></p>
<p>Works like a regular Werkzeug test client but has knowledge about
Flasks contexts to defer the cleanup of the request context until
the end of a <code class="docutils literal notranslate"><span class="pre">with</span></code> block. For general information about how to
use this class refer to <code class="xref py py-class docutils literal notranslate"><span class="pre">werkzeug.test.Client</span></code>.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.12: </span><cite>app.test_client()</cite> includes preset default environment, which can be
set after instantiation of the <cite>app.test_client()</cite> object in
<cite>client.environ_base</cite>.</p>
</div>
<p>Basic usage is outlined in the <span class="xref std std-doc">/testing</span> chapter.</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.testing.FlaskClient.application">
<span class="sig-name descname"><span class="pre">application</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#flask.app.Flask" title="flask.app.Flask"><span class="pre">Flask</span></a></em><a class="headerlink" href="#flask.testing.FlaskClient.application" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.testing.FlaskClient.open">
<span class="sig-name descname"><span class="pre">open</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">t.Any</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">buffered</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">follow_redirects</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">t.Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">TestResponse</span></span></span><a class="headerlink" href="#flask.testing.FlaskClient.open" title="Link to this definition"></a></dt>
<dd><p>Generate an environ dict from the given arguments, make a
request to the application using it, and return the response.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>args</strong> Passed to <a class="reference internal" href="#flask.testing.EnvironBuilder" title="flask.testing.EnvironBuilder"><code class="xref py py-class docutils literal notranslate"><span class="pre">EnvironBuilder</span></code></a> to create the
environ for the request. If a single arg is passed, it can
be an existing <a class="reference internal" href="#flask.testing.EnvironBuilder" title="flask.testing.EnvironBuilder"><code class="xref py py-class docutils literal notranslate"><span class="pre">EnvironBuilder</span></code></a> or an environ dict.</p></li>
<li><p><strong>buffered</strong> Convert the iterator returned by the app into
a list. If the iterator has a <code class="docutils literal notranslate"><span class="pre">close()</span></code> method, it is
called automatically.</p></li>
<li><p><strong>follow_redirects</strong> Make additional requests to follow HTTP
redirects until a non-redirect status is returned.
<code class="xref py py-attr docutils literal notranslate"><span class="pre">TestResponse.history</span></code> lists the intermediate
responses.</p></li>
</ul>
</dd>
</dl>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.1: </span>Removed the <code class="docutils literal notranslate"><span class="pre">as_tuple</span></code> parameter.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.0: </span>The request input stream is closed when calling
<code class="docutils literal notranslate"><span class="pre">response.close()</span></code>. Input streams for redirects are
automatically closed.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.5: </span>If a dict is provided as file in the dict for the <code class="docutils literal notranslate"><span class="pre">data</span></code>
parameter the content type has to be called <code class="docutils literal notranslate"><span class="pre">content_type</span></code>
instead of <code class="docutils literal notranslate"><span class="pre">mimetype</span></code>. This change was made for
consistency with <code class="xref py py-class docutils literal notranslate"><span class="pre">werkzeug.FileWrapper</span></code>.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.5: </span>Added the <code class="docutils literal notranslate"><span class="pre">follow_redirects</span></code> parameter.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.testing.FlaskClient.session_transaction">
<span class="sig-name descname"><span class="pre">session_transaction</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Iterator</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#flask.sessions.SessionMixin" title="flask.sessions.SessionMixin"><span class="pre">SessionMixin</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#flask.testing.FlaskClient.session_transaction" title="Link to this definition"></a></dt>
<dd><p>When used in combination with a <code class="docutils literal notranslate"><span class="pre">with</span></code> statement this opens a
session transaction. This can be used to modify the session that
the test client uses. Once the <code class="docutils literal notranslate"><span class="pre">with</span></code> block is left the session is
stored back.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">with</span> <span class="n">client</span><span class="o">.</span><span class="n">session_transaction</span><span class="p">()</span> <span class="k">as</span> <span class="n">session</span><span class="p">:</span>
<span class="n">session</span><span class="p">[</span><span class="s1">&#39;value&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">42</span>
</pre></div>
</div>
<p>Internally this is implemented by going through a temporary test
request context and since session handling could depend on
request variables this function accepts the same arguments as
<code class="xref py py-meth docutils literal notranslate"><span class="pre">test_request_context()</span></code> which are directly
passed through.</p>
</dd></dl>
</dd></dl>
</section>
<section id="module-flask.typing">
<span id="flask-typing-module"></span><h2>flask.typing module<a class="headerlink" href="#module-flask.typing" title="Link to this heading"></a></h2>
</section>
<section id="module-flask.views">
<span id="flask-views-module"></span><h2>flask.views module<a class="headerlink" href="#module-flask.views" title="Link to this heading"></a></h2>
<dl class="py class">
<dt class="sig sig-object py" id="flask.views.MethodView">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.views.</span></span><span class="sig-name descname"><span class="pre">MethodView</span></span><a class="headerlink" href="#flask.views.MethodView" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#flask.views.View" title="flask.views.View"><code class="xref py py-class docutils literal notranslate"><span class="pre">View</span></code></a></p>
<p>Dispatches request methods to the corresponding instance methods.
For example, if you implement a <code class="docutils literal notranslate"><span class="pre">get</span></code> method, it will be used to
handle <code class="docutils literal notranslate"><span class="pre">GET</span></code> requests.</p>
<p>This can be useful for defining a REST API.</p>
<p><code class="xref py py-attr docutils literal notranslate"><span class="pre">methods</span></code> is automatically set based on the methods defined on
the class.</p>
<p>See <span class="xref std std-doc">views</span> for a detailed guide.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">CounterAPI</span><span class="p">(</span><span class="n">MethodView</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">session</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;counter&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
<span class="k">def</span><span class="w"> </span><span class="nf">post</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">session</span><span class="p">[</span><span class="s2">&quot;counter&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;counter&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span>
<span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">url_for</span><span class="p">(</span><span class="s2">&quot;counter&quot;</span><span class="p">))</span>
<span class="n">app</span><span class="o">.</span><span class="n">add_url_rule</span><span class="p">(</span>
<span class="s2">&quot;/counter&quot;</span><span class="p">,</span> <span class="n">view_func</span><span class="o">=</span><span class="n">CounterAPI</span><span class="o">.</span><span class="n">as_view</span><span class="p">(</span><span class="s2">&quot;counter&quot;</span><span class="p">)</span>
<span class="p">)</span>
</pre></div>
</div>
<dl class="py method">
<dt class="sig sig-object py" id="flask.views.MethodView.dispatch_request">
<span class="sig-name descname"><span class="pre">dispatch_request</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">t.Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">ft.ResponseReturnValue</span></span></span><a class="headerlink" href="#flask.views.MethodView.dispatch_request" title="Link to this definition"></a></dt>
<dd><p>The actual view function behavior. Subclasses must override
this and return a valid response. Any variables from the URL
rule are passed as keyword arguments.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="flask.views.View">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.views.</span></span><span class="sig-name descname"><span class="pre">View</span></span><a class="headerlink" href="#flask.views.View" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Subclass this class and override <a class="reference internal" href="#flask.views.View.dispatch_request" title="flask.views.View.dispatch_request"><code class="xref py py-meth docutils literal notranslate"><span class="pre">dispatch_request()</span></code></a> to
create a generic class-based view. Call <a class="reference internal" href="#flask.views.View.as_view" title="flask.views.View.as_view"><code class="xref py py-meth docutils literal notranslate"><span class="pre">as_view()</span></code></a> to create a
view function that creates an instance of the class with the given
arguments and calls its <code class="docutils literal notranslate"><span class="pre">dispatch_request</span></code> method with any URL
variables.</p>
<p>See <span class="xref std std-doc">views</span> for a detailed guide.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Hello</span><span class="p">(</span><span class="n">View</span><span class="p">):</span>
<span class="n">init_every_request</span> <span class="o">=</span> <span class="kc">False</span>
<span class="k">def</span><span class="w"> </span><span class="nf">dispatch_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;Hello, </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">!&quot;</span>
<span class="n">app</span><span class="o">.</span><span class="n">add_url_rule</span><span class="p">(</span>
<span class="s2">&quot;/hello/&lt;name&gt;&quot;</span><span class="p">,</span> <span class="n">view_func</span><span class="o">=</span><span class="n">Hello</span><span class="o">.</span><span class="n">as_view</span><span class="p">(</span><span class="s2">&quot;hello&quot;</span><span class="p">)</span>
<span class="p">)</span>
</pre></div>
</div>
<p>Set <a class="reference internal" href="#flask.views.View.methods" title="flask.views.View.methods"><code class="xref py py-attr docutils literal notranslate"><span class="pre">methods</span></code></a> on the class to change what methods the view
accepts.</p>
<p>Set <a class="reference internal" href="#flask.views.View.decorators" title="flask.views.View.decorators"><code class="xref py py-attr docutils literal notranslate"><span class="pre">decorators</span></code></a> on the class to apply a list of decorators to
the generated view function. Decorators applied to the class itself
will not be applied to the generated view function!</p>
<p>Set <a class="reference internal" href="#flask.views.View.init_every_request" title="flask.views.View.init_every_request"><code class="xref py py-attr docutils literal notranslate"><span class="pre">init_every_request</span></code></a> to <code class="docutils literal notranslate"><span class="pre">False</span></code> for efficiency, unless
you need to store request-global data on <code class="docutils literal notranslate"><span class="pre">self</span></code>.</p>
<dl class="py method">
<dt class="sig sig-object py" id="flask.views.View.as_view">
<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">as_view</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">class_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">t.Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">class_kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">t.Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">ft.RouteCallable</span></span></span><a class="headerlink" href="#flask.views.View.as_view" title="Link to this definition"></a></dt>
<dd><p>Convert the class into a view function that can be registered
for a route.</p>
<p>By default, the generated view will create a new instance of the
view class for every request and call its
<a class="reference internal" href="#flask.views.View.dispatch_request" title="flask.views.View.dispatch_request"><code class="xref py py-meth docutils literal notranslate"><span class="pre">dispatch_request()</span></code></a> method. If the view class sets
<a class="reference internal" href="#flask.views.View.init_every_request" title="flask.views.View.init_every_request"><code class="xref py py-attr docutils literal notranslate"><span class="pre">init_every_request</span></code></a> to <code class="docutils literal notranslate"><span class="pre">False</span></code>, the same instance will
be used for every request.</p>
<p>Except for <code class="docutils literal notranslate"><span class="pre">name</span></code>, all other arguments passed to this method
are forwarded to the view class <code class="docutils literal notranslate"><span class="pre">__init__</span></code> method.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.2: </span>Added the <code class="docutils literal notranslate"><span class="pre">init_every_request</span></code> class attribute.</p>
</div>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.views.View.decorators">
<span class="sig-name descname"><span class="pre">decorators</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">[]</span></em><a class="headerlink" href="#flask.views.View.decorators" title="Link to this definition"></a></dt>
<dd><p>A list of decorators to apply, in order, to the generated view
function. Remember that <code class="docutils literal notranslate"><span class="pre">&#64;decorator</span></code> syntax is applied bottom
to top, so the first decorator in the list would be the bottom
decorator.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.8.</span></p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.views.View.dispatch_request">
<span class="sig-name descname"><span class="pre">dispatch_request</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">ft.ResponseReturnValue</span></span></span><a class="headerlink" href="#flask.views.View.dispatch_request" title="Link to this definition"></a></dt>
<dd><p>The actual view function behavior. Subclasses must override
this and return a valid response. Any variables from the URL
rule are passed as keyword arguments.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.views.View.init_every_request">
<span class="sig-name descname"><span class="pre">init_every_request</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="headerlink" href="#flask.views.View.init_every_request" title="Link to this definition"></a></dt>
<dd><p>Create a new instance of this view class for every request by
default. If a view subclass sets this to <code class="docutils literal notranslate"><span class="pre">False</span></code>, the same
instance is used for every request.</p>
<p>A single instance is more efficient, especially if complex setup
is done during init. However, storing data on <code class="docutils literal notranslate"><span class="pre">self</span></code> is no
longer safe across requests, and <code class="xref py py-data docutils literal notranslate"><span class="pre">g</span></code> should be used
instead.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 2.2.</span></p>
</div>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.views.View.methods">
<span class="sig-name descname"><span class="pre">methods</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">Collection</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#flask.views.View.methods" title="Link to this definition"></a></dt>
<dd><p>The methods this view is registered for. Uses the same default
(<code class="docutils literal notranslate"><span class="pre">[&quot;GET&quot;,</span> <span class="pre">&quot;HEAD&quot;,</span> <span class="pre">&quot;OPTIONS&quot;]</span></code>) as <code class="docutils literal notranslate"><span class="pre">route</span></code> and
<code class="docutils literal notranslate"><span class="pre">add_url_rule</span></code> by default.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.views.View.provide_automatic_options">
<span class="sig-name descname"><span class="pre">provide_automatic_options</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#flask.views.View.provide_automatic_options" title="Link to this definition"></a></dt>
<dd><p>Control whether the <code class="docutils literal notranslate"><span class="pre">OPTIONS</span></code> method is handled automatically.
Uses the same default (<code class="docutils literal notranslate"><span class="pre">True</span></code>) as <code class="docutils literal notranslate"><span class="pre">route</span></code> and
<code class="docutils literal notranslate"><span class="pre">add_url_rule</span></code> by default.</p>
</dd></dl>
</dd></dl>
</section>
<section id="module-flask.wrappers">
<span id="flask-wrappers-module"></span><h2>flask.wrappers module<a class="headerlink" href="#module-flask.wrappers" title="Link to this heading"></a></h2>
<dl class="py class">
<dt class="sig sig-object py" id="flask.wrappers.Request">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.wrappers.</span></span><span class="sig-name descname"><span class="pre">Request</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">environ</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">WSGIEnvironment</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">populate_request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shallow</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.wrappers.Request" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Request</span></code></p>
<p>The request object used by default in Flask. Remembers the
matched endpoint and view arguments.</p>
<p>It is what ends up as <code class="xref py py-class docutils literal notranslate"><span class="pre">request</span></code>. If you want to replace
the request object used you can subclass this and set
<code class="xref py py-attr docutils literal notranslate"><span class="pre">request_class</span></code> to your subclass.</p>
<p>The request object is a <code class="xref py py-class docutils literal notranslate"><span class="pre">Request</span></code> subclass and
provides all of the attributes Werkzeug defines plus a few Flask
specific ones.</p>
<dl class="py property">
<dt class="sig sig-object py" id="flask.wrappers.Request.blueprint">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">blueprint</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#flask.wrappers.Request.blueprint" title="Link to this definition"></a></dt>
<dd><p>The registered name of the current blueprint.</p>
<p>This will be <code class="docutils literal notranslate"><span class="pre">None</span></code> if the endpoint is not part of a
blueprint, or if URL matching failed or has not been performed
yet.</p>
<p>This does not necessarily match the name the blueprint was
created with. It may have been nested, or registered with a
different name.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="flask.wrappers.Request.blueprints">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">blueprints</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></em><a class="headerlink" href="#flask.wrappers.Request.blueprints" title="Link to this definition"></a></dt>
<dd><p>The registered names of the current blueprint upwards through
parent blueprints.</p>
<p>This will be an empty list if there is no current blueprint, or
if URL matching failed.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 2.0.1.</span></p>
</div>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="flask.wrappers.Request.endpoint">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">endpoint</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#flask.wrappers.Request.endpoint" title="Link to this definition"></a></dt>
<dd><p>The endpoint that matched the request URL.</p>
<p>This will be <code class="docutils literal notranslate"><span class="pre">None</span></code> if matching failed or has not been
performed yet.</p>
<p>This in combination with <a class="reference internal" href="#flask.wrappers.Request.view_args" title="flask.wrappers.Request.view_args"><code class="xref py py-attr docutils literal notranslate"><span class="pre">view_args</span></code></a> can be used to
reconstruct the same URL or a modified URL.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.wrappers.Request.json_module">
<span class="sig-name descname"><span class="pre">json_module</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">t.Any</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">&lt;module</span> <span class="pre">'flask.json'</span> <span class="pre">from</span> <span class="pre">'/home/edgar/ucr/software_des/repo/flask/src/flask/json/__init__.py'&gt;</span></em><a class="headerlink" href="#flask.wrappers.Request.json_module" title="Link to this definition"></a></dt>
<dd><p>A module or other object that has <code class="docutils literal notranslate"><span class="pre">dumps</span></code> and <code class="docutils literal notranslate"><span class="pre">loads</span></code>
functions that match the API of the built-in <code class="xref py py-mod docutils literal notranslate"><span class="pre">json</span></code> module.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="flask.wrappers.Request.max_content_length">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">max_content_length</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#flask.wrappers.Request.max_content_length" title="Link to this definition"></a></dt>
<dd><p>The maximum number of bytes that will be read during this request. If
this limit is exceeded, a 413 <code class="xref py py-exc docutils literal notranslate"><span class="pre">RequestEntityTooLarge</span></code>
error is raised. If it is set to <code class="docutils literal notranslate"><span class="pre">None</span></code>, no limit is enforced at the
Flask application level. However, if it is <code class="docutils literal notranslate"><span class="pre">None</span></code> and the request has
no <code class="docutils literal notranslate"><span class="pre">Content-Length</span></code> header and the WSGI server does not indicate that
it terminates the stream, then no data is read to avoid an infinite
stream.</p>
<p>Each request defaults to the <code class="xref py py-data docutils literal notranslate"><span class="pre">MAX_CONTENT_LENGTH</span></code> config, which
defaults to <code class="docutils literal notranslate"><span class="pre">None</span></code>. It can be set on a specific <code class="docutils literal notranslate"><span class="pre">request</span></code> to apply
the limit to that specific view. This should be set appropriately based
on an applications or views specific needs.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 3.1: </span>This can be set per-request.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 0.6: </span>This is configurable through Flask config.</p>
</div>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="flask.wrappers.Request.max_form_memory_size">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">max_form_memory_size</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#flask.wrappers.Request.max_form_memory_size" title="Link to this definition"></a></dt>
<dd><p>The maximum size in bytes any non-file form field may be in a
<code class="docutils literal notranslate"><span class="pre">multipart/form-data</span></code> body. If this limit is exceeded, a 413
<code class="xref py py-exc docutils literal notranslate"><span class="pre">RequestEntityTooLarge</span></code> error is raised. If it
is set to <code class="docutils literal notranslate"><span class="pre">None</span></code>, no limit is enforced at the Flask application level.</p>
<p>Each request defaults to the <code class="xref py py-data docutils literal notranslate"><span class="pre">MAX_FORM_MEMORY_SIZE</span></code> config, which
defaults to <code class="docutils literal notranslate"><span class="pre">500_000</span></code>. It can be set on a specific <code class="docutils literal notranslate"><span class="pre">request</span></code> to
apply the limit to that specific view. This should be set appropriately
based on an applications or views specific needs.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 3.1: </span>This is configurable through Flask config.</p>
</div>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="flask.wrappers.Request.max_form_parts">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">max_form_parts</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#flask.wrappers.Request.max_form_parts" title="Link to this definition"></a></dt>
<dd><p>The maximum number of fields that may be present in a
<code class="docutils literal notranslate"><span class="pre">multipart/form-data</span></code> body. If this limit is exceeded, a 413
<code class="xref py py-exc docutils literal notranslate"><span class="pre">RequestEntityTooLarge</span></code> error is raised. If it
is set to <code class="docutils literal notranslate"><span class="pre">None</span></code>, no limit is enforced at the Flask application level.</p>
<p>Each request defaults to the <code class="xref py py-data docutils literal notranslate"><span class="pre">MAX_FORM_PARTS</span></code> config, which
defaults to <code class="docutils literal notranslate"><span class="pre">1_000</span></code>. It can be set on a specific <code class="docutils literal notranslate"><span class="pre">request</span></code> to apply
the limit to that specific view. This should be set appropriately based
on an applications or views specific needs.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 3.1: </span>This is configurable through Flask config.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="flask.wrappers.Request.on_json_loading_failed">
<span class="sig-name descname"><span class="pre">on_json_loading_failed</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">e</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">ValueError</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="headerlink" href="#flask.wrappers.Request.on_json_loading_failed" title="Link to this definition"></a></dt>
<dd><p>Called if <code class="xref py py-meth docutils literal notranslate"><span class="pre">get_json()</span></code> fails and isnt silenced.</p>
<p>If this method returns a value, it is used as the return value
for <code class="xref py py-meth docutils literal notranslate"><span class="pre">get_json()</span></code>. The default implementation raises
<code class="xref py py-exc docutils literal notranslate"><span class="pre">BadRequest</span></code>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>e</strong> If parsing failed, this is the exception. It will be
<code class="docutils literal notranslate"><span class="pre">None</span></code> if the content type wasnt <code class="docutils literal notranslate"><span class="pre">application/json</span></code>.</p>
</dd>
</dl>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.3: </span>Raise a 415 error instead of 400.</p>
</div>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.wrappers.Request.routing_exception">
<span class="sig-name descname"><span class="pre">routing_exception</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">HTTPException</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#flask.wrappers.Request.routing_exception" title="Link to this definition"></a></dt>
<dd><p>If matching the URL failed, this is the exception that will be
raised / was raised as part of the request handling. This is
usually a <code class="xref py py-exc docutils literal notranslate"><span class="pre">NotFound</span></code> exception or
something similar.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.wrappers.Request.url_rule">
<span class="sig-name descname"><span class="pre">url_rule</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Rule</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#flask.wrappers.Request.url_rule" title="Link to this definition"></a></dt>
<dd><p>The internal URL rule that matched the request. This can be
useful to inspect which methods are allowed for the URL from
a before/after handler (<code class="docutils literal notranslate"><span class="pre">request.url_rule.methods</span></code>) etc.
Though if the requests method was invalid for the URL rule,
the valid list is available in <code class="docutils literal notranslate"><span class="pre">routing_exception.valid_methods</span></code>
instead (an attribute of the Werkzeug exception
<code class="xref py py-exc docutils literal notranslate"><span class="pre">MethodNotAllowed</span></code>)
because the request was never internally bound.</p>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.6.</span></p>
</div>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.wrappers.Request.view_args">
<span class="sig-name descname"><span class="pre">view_args</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">t.Any</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#flask.wrappers.Request.view_args" title="Link to this definition"></a></dt>
<dd><p>A dict of view arguments that matched the request. If an exception
happened when matching, this will be <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="flask.wrappers.Response">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">flask.wrappers.</span></span><span class="sig-name descname"><span class="pre">Response</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">response</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Iterable</span><span class="p"><span class="pre">[</span></span><span class="pre">bytes</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">bytes</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Iterable</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">status</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">HTTPStatus</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">headers</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Mapping</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Iterable</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Iterable</span><span class="p"><span class="pre">[</span></span><span class="pre">tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">mimetype</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">content_type</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">direct_passthrough</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#flask.wrappers.Response" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Response</span></code></p>
<p>The response object that is used by default in Flask. Works like the
response object from Werkzeug but is set to have an HTML mimetype by
default. Quite often you dont have to create this object yourself because
<code class="xref py py-meth docutils literal notranslate"><span class="pre">make_response()</span></code> will take care of that for you.</p>
<p>If you want to replace the response object used you can subclass this and
set <code class="xref py py-attr docutils literal notranslate"><span class="pre">response_class</span></code> to your subclass.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 1.0: </span>JSON support is added to the response, like the request. This is useful
when testing to get the test client response data as JSON.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 1.0: </span>Added <a class="reference internal" href="#flask.wrappers.Response.max_cookie_size" title="flask.wrappers.Response.max_cookie_size"><code class="xref py py-attr docutils literal notranslate"><span class="pre">max_cookie_size</span></code></a>.</p>
</div>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.wrappers.Response.autocorrect_location_header">
<span class="sig-name descname"><span class="pre">autocorrect_location_header</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="headerlink" href="#flask.wrappers.Response.autocorrect_location_header" title="Link to this definition"></a></dt>
<dd><p>If a redirect <code class="docutils literal notranslate"><span class="pre">Location</span></code> header is a relative URL, make it an
absolute URL, including scheme and domain.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">Changed in version 2.1: </span>This is disabled by default, so responses will send relative
redirects.</p>
</div>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 0.8.</span></p>
</div>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.wrappers.Response.default_mimetype">
<span class="sig-name descname"><span class="pre">default_mimetype</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'text/html'</span></em><a class="headerlink" href="#flask.wrappers.Response.default_mimetype" title="Link to this definition"></a></dt>
<dd><p>the default mimetype if none is provided.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="flask.wrappers.Response.json_module">
<span class="sig-name descname"><span class="pre">json_module</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">&lt;module</span> <span class="pre">'flask.json'</span> <span class="pre">from</span> <span class="pre">'/home/edgar/ucr/software_des/repo/flask/src/flask/json/__init__.py'&gt;</span></em><a class="headerlink" href="#flask.wrappers.Response.json_module" title="Link to this definition"></a></dt>
<dd><p>A module or other object that has <code class="docutils literal notranslate"><span class="pre">dumps</span></code> and <code class="docutils literal notranslate"><span class="pre">loads</span></code>
functions that match the API of the built-in <code class="xref py py-mod docutils literal notranslate"><span class="pre">json</span></code> module.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="flask.wrappers.Response.max_cookie_size">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">max_cookie_size</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><a class="headerlink" href="#flask.wrappers.Response.max_cookie_size" title="Link to this definition"></a></dt>
<dd><p>Read-only view of the <code class="xref py py-data docutils literal notranslate"><span class="pre">MAX_COOKIE_SIZE</span></code> config key.</p>
<p>See <code class="xref py py-attr docutils literal notranslate"><span class="pre">max_cookie_size</span></code> in
Werkzeugs docs.</p>
</dd></dl>
</dd></dl>
</section>
<section id="module-flask">
<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-flask" title="Link to this heading"></a></h2>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="modules.html" class="btn btn-neutral float-left" title="flask" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="flask.json.html" class="btn btn-neutral float-right" title="flask.json package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2025, Pallets Team.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>