CINXE.COM
Welcome to Flask — Flask Documentation (3.1.x)
<!DOCTYPE html> <html lang="en" data-content_root="./"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Welcome to Flask — Flask Documentation (3.1.x)</title> <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=4f649999" /> <link rel="stylesheet" type="text/css" href="_static/flask.css?v=b87c8d14" /> <script src="_static/documentation_options.js?v=d71c4578"></script> <script src="_static/doctools.js?v=9bcbadda"></script> <script src="_static/sphinx_highlight.js?v=dc90522c"></script> <link rel="canonical" href="https://flask.palletsprojects.com/en/stable/" /> <link rel="icon" href="_static/shortcut-icon.png"/> <link rel="index" title="Index" href="genindex/" /> <link rel="search" title="Search" href="search/" /> <link rel="next" title="Installation" href="installation/" /> <script async type="text/javascript" src="/_/static/javascript/readthedocs-addons.js"></script><meta name="readthedocs-project-slug" content="flask" /><meta name="readthedocs-version-slug" content="stable" /><meta name="readthedocs-resolver-filename" content="/" /><meta name="readthedocs-http-status" content="200" /></head><body> <div class="related" role="navigation" aria-label="Related"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="genindex/" title="General Index" accesskey="I">index</a></li> <li class="right" > <a href="py-modindex/" title="Python Module Index" >modules</a> |</li> <li class="right" > <a href="installation/" title="Installation" accesskey="N">next</a> |</li> <li class="nav-item nav-item-0"><a href="#">Flask Documentation (3.1.x)</a> »</li> <li class="nav-item nav-item-this"><a href="">Welcome to Flask</a></li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body" role="main"> <section class="hide-header" id="welcome-to-flask"> <h1>Welcome to Flask<a class="headerlink" href="#welcome-to-flask" title="Link to this heading">¶</a></h1> <img alt="_images/flask-horizontal.png" class="align-center" src="_images/flask-horizontal.png" /> <p>Welcome to Flask’s documentation. Flask is a lightweight WSGI web application framework. It is designed to make getting started quick and easy, with the ability to scale up to complex applications.</p> <p>Get started with <a class="reference internal" href="installation/"><span class="doc">Installation</span></a> and then get an overview with the <a class="reference internal" href="quickstart/"><span class="doc">Quickstart</span></a>. There is also a more detailed <a class="reference internal" href="tutorial/"><span class="doc">Tutorial</span></a> that shows how to create a small but complete application with Flask. Common patterns are described in the <a class="reference internal" href="patterns/"><span class="doc">Patterns for Flask</span></a> section. The rest of the docs describe each component of Flask in detail, with a full reference in the <a class="reference internal" href="api/"><span class="doc">API</span></a> section.</p> <p>Flask depends on the <a class="reference external" href="https://werkzeug.palletsprojects.com">Werkzeug</a> WSGI toolkit, the <a class="reference external" href="https://jinja.palletsprojects.com">Jinja</a> template engine, and the <a class="reference external" href="https://click.palletsprojects.com">Click</a> CLI toolkit. Be sure to check their documentation as well as Flask’s when looking for information.</p> <section id="user-s-guide"> <h2>User’s Guide<a class="headerlink" href="#user-s-guide" title="Link to this heading">¶</a></h2> <p>Flask provides configuration and conventions, with sensible defaults, to get started. This section of the documentation explains the different parts of the Flask framework and how they can be used, customized, and extended. Beyond Flask itself, look for community-maintained extensions to add even more functionality.</p> <div class="toctree-wrapper compound"> <ul> <li class="toctree-l1"><a class="reference internal" href="installation/">Installation</a><ul> <li class="toctree-l2"><a class="reference internal" href="installation/#python-version">Python Version</a></li> <li class="toctree-l2"><a class="reference internal" href="installation/#dependencies">Dependencies</a></li> <li class="toctree-l2"><a class="reference internal" href="installation/#virtual-environments">Virtual environments</a></li> <li class="toctree-l2"><a class="reference internal" href="installation/#install-flask">Install Flask</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="quickstart/">Quickstart</a><ul> <li class="toctree-l2"><a class="reference internal" href="quickstart/#a-minimal-application">A Minimal Application</a></li> <li class="toctree-l2"><a class="reference internal" href="quickstart/#debug-mode">Debug Mode</a></li> <li class="toctree-l2"><a class="reference internal" href="quickstart/#html-escaping">HTML Escaping</a></li> <li class="toctree-l2"><a class="reference internal" href="quickstart/#routing">Routing</a></li> <li class="toctree-l2"><a class="reference internal" href="quickstart/#static-files">Static Files</a></li> <li class="toctree-l2"><a class="reference internal" href="quickstart/#rendering-templates">Rendering Templates</a></li> <li class="toctree-l2"><a class="reference internal" href="quickstart/#accessing-request-data">Accessing Request Data</a></li> <li class="toctree-l2"><a class="reference internal" href="quickstart/#redirects-and-errors">Redirects and Errors</a></li> <li class="toctree-l2"><a class="reference internal" href="quickstart/#about-responses">About Responses</a></li> <li class="toctree-l2"><a class="reference internal" href="quickstart/#sessions">Sessions</a></li> <li class="toctree-l2"><a class="reference internal" href="quickstart/#message-flashing">Message Flashing</a></li> <li class="toctree-l2"><a class="reference internal" href="quickstart/#logging">Logging</a></li> <li class="toctree-l2"><a class="reference internal" href="quickstart/#hooking-in-wsgi-middleware">Hooking in WSGI Middleware</a></li> <li class="toctree-l2"><a class="reference internal" href="quickstart/#using-flask-extensions">Using Flask Extensions</a></li> <li class="toctree-l2"><a class="reference internal" href="quickstart/#deploying-to-a-web-server">Deploying to a Web Server</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="tutorial/">Tutorial</a><ul> <li class="toctree-l2"><a class="reference internal" href="tutorial/layout/">Project Layout</a></li> <li class="toctree-l2"><a class="reference internal" href="tutorial/factory/">Application Setup</a></li> <li class="toctree-l2"><a class="reference internal" href="tutorial/database/">Define and Access the Database</a></li> <li class="toctree-l2"><a class="reference internal" href="tutorial/views/">Blueprints and Views</a></li> <li class="toctree-l2"><a class="reference internal" href="tutorial/templates/">Templates</a></li> <li class="toctree-l2"><a class="reference internal" href="tutorial/static/">Static Files</a></li> <li class="toctree-l2"><a class="reference internal" href="tutorial/blog/">Blog Blueprint</a></li> <li class="toctree-l2"><a class="reference internal" href="tutorial/install/">Make the Project Installable</a></li> <li class="toctree-l2"><a class="reference internal" href="tutorial/tests/">Test Coverage</a></li> <li class="toctree-l2"><a class="reference internal" href="tutorial/deploy/">Deploy to Production</a></li> <li class="toctree-l2"><a class="reference internal" href="tutorial/next/">Keep Developing!</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="templating/">Templates</a><ul> <li class="toctree-l2"><a class="reference internal" href="templating/#jinja-setup">Jinja Setup</a></li> <li class="toctree-l2"><a class="reference internal" href="templating/#standard-context">Standard Context</a></li> <li class="toctree-l2"><a class="reference internal" href="templating/#controlling-autoescaping">Controlling Autoescaping</a></li> <li class="toctree-l2"><a class="reference internal" href="templating/#registering-filters">Registering Filters</a></li> <li class="toctree-l2"><a class="reference internal" href="templating/#context-processors">Context Processors</a></li> <li class="toctree-l2"><a class="reference internal" href="templating/#streaming">Streaming</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="testing/">Testing Flask Applications</a><ul> <li class="toctree-l2"><a class="reference internal" href="testing/#identifying-tests">Identifying Tests</a></li> <li class="toctree-l2"><a class="reference internal" href="testing/#fixtures">Fixtures</a></li> <li class="toctree-l2"><a class="reference internal" href="testing/#sending-requests-with-the-test-client">Sending Requests with the Test Client</a></li> <li class="toctree-l2"><a class="reference internal" href="testing/#following-redirects">Following Redirects</a></li> <li class="toctree-l2"><a class="reference internal" href="testing/#accessing-and-modifying-the-session">Accessing and Modifying the Session</a></li> <li class="toctree-l2"><a class="reference internal" href="testing/#running-commands-with-the-cli-runner">Running Commands with the CLI Runner</a></li> <li class="toctree-l2"><a class="reference internal" href="testing/#tests-that-depend-on-an-active-context">Tests that depend on an Active Context</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="errorhandling/">Handling Application Errors</a><ul> <li class="toctree-l2"><a class="reference internal" href="errorhandling/#error-logging-tools">Error Logging Tools</a></li> <li class="toctree-l2"><a class="reference internal" href="errorhandling/#error-handlers">Error Handlers</a></li> <li class="toctree-l2"><a class="reference internal" href="errorhandling/#custom-error-pages">Custom Error Pages</a></li> <li class="toctree-l2"><a class="reference internal" href="errorhandling/#blueprint-error-handlers">Blueprint Error Handlers</a></li> <li class="toctree-l2"><a class="reference internal" href="errorhandling/#returning-api-errors-as-json">Returning API Errors as JSON</a></li> <li class="toctree-l2"><a class="reference internal" href="errorhandling/#logging">Logging</a></li> <li class="toctree-l2"><a class="reference internal" href="errorhandling/#debugging">Debugging</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="debugging/">Debugging Application Errors</a><ul> <li class="toctree-l2"><a class="reference internal" href="debugging/#in-production">In Production</a></li> <li class="toctree-l2"><a class="reference internal" href="debugging/#the-built-in-debugger">The Built-In Debugger</a></li> <li class="toctree-l2"><a class="reference internal" href="debugging/#external-debuggers">External Debuggers</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="logging/">Logging</a><ul> <li class="toctree-l2"><a class="reference internal" href="logging/#basic-configuration">Basic Configuration</a></li> <li class="toctree-l2"><a class="reference internal" href="logging/#email-errors-to-admins">Email Errors to Admins</a></li> <li class="toctree-l2"><a class="reference internal" href="logging/#injecting-request-information">Injecting Request Information</a></li> <li class="toctree-l2"><a class="reference internal" href="logging/#other-libraries">Other Libraries</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="config/">Configuration Handling</a><ul> <li class="toctree-l2"><a class="reference internal" href="config/#configuration-basics">Configuration Basics</a></li> <li class="toctree-l2"><a class="reference internal" href="config/#debug-mode">Debug Mode</a></li> <li class="toctree-l2"><a class="reference internal" href="config/#builtin-configuration-values">Builtin Configuration Values</a></li> <li class="toctree-l2"><a class="reference internal" href="config/#configuring-from-python-files">Configuring from Python Files</a></li> <li class="toctree-l2"><a class="reference internal" href="config/#configuring-from-data-files">Configuring from Data Files</a></li> <li class="toctree-l2"><a class="reference internal" href="config/#configuring-from-environment-variables">Configuring from Environment Variables</a></li> <li class="toctree-l2"><a class="reference internal" href="config/#configuration-best-practices">Configuration Best Practices</a></li> <li class="toctree-l2"><a class="reference internal" href="config/#development-production">Development / Production</a></li> <li class="toctree-l2"><a class="reference internal" href="config/#instance-folders">Instance Folders</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="signals/">Signals</a><ul> <li class="toctree-l2"><a class="reference internal" href="signals/#core-signals">Core Signals</a></li> <li class="toctree-l2"><a class="reference internal" href="signals/#subscribing-to-signals">Subscribing to Signals</a></li> <li class="toctree-l2"><a class="reference internal" href="signals/#creating-signals">Creating Signals</a></li> <li class="toctree-l2"><a class="reference internal" href="signals/#sending-signals">Sending Signals</a></li> <li class="toctree-l2"><a class="reference internal" href="signals/#signals-and-flask-s-request-context">Signals and Flask’s Request Context</a></li> <li class="toctree-l2"><a class="reference internal" href="signals/#decorator-based-signal-subscriptions">Decorator Based Signal Subscriptions</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="views/">Class-based Views</a><ul> <li class="toctree-l2"><a class="reference internal" href="views/#basic-reusable-view">Basic Reusable View</a></li> <li class="toctree-l2"><a class="reference internal" href="views/#url-variables">URL Variables</a></li> <li class="toctree-l2"><a class="reference internal" href="views/#view-lifetime-and-self">View Lifetime and <code class="docutils literal notranslate"><span class="pre">self</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="views/#view-decorators">View Decorators</a></li> <li class="toctree-l2"><a class="reference internal" href="views/#method-hints">Method Hints</a></li> <li class="toctree-l2"><a class="reference internal" href="views/#method-dispatching-and-apis">Method Dispatching and APIs</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="lifecycle/">Application Structure and Lifecycle</a><ul> <li class="toctree-l2"><a class="reference internal" href="lifecycle/#application-setup">Application Setup</a></li> <li class="toctree-l2"><a class="reference internal" href="lifecycle/#serving-the-application">Serving the Application</a></li> <li class="toctree-l2"><a class="reference internal" href="lifecycle/#how-a-request-is-handled">How a Request is Handled</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="appcontext/">The Application Context</a><ul> <li class="toctree-l2"><a class="reference internal" href="appcontext/#purpose-of-the-context">Purpose of the Context</a></li> <li class="toctree-l2"><a class="reference internal" href="appcontext/#lifetime-of-the-context">Lifetime of the Context</a></li> <li class="toctree-l2"><a class="reference internal" href="appcontext/#manually-push-a-context">Manually Push a Context</a></li> <li class="toctree-l2"><a class="reference internal" href="appcontext/#storing-data">Storing Data</a></li> <li class="toctree-l2"><a class="reference internal" href="appcontext/#events-and-signals">Events and Signals</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="reqcontext/">The Request Context</a><ul> <li class="toctree-l2"><a class="reference internal" href="reqcontext/#purpose-of-the-context">Purpose of the Context</a></li> <li class="toctree-l2"><a class="reference internal" href="reqcontext/#lifetime-of-the-context">Lifetime of the Context</a></li> <li class="toctree-l2"><a class="reference internal" href="reqcontext/#manually-push-a-context">Manually Push a Context</a></li> <li class="toctree-l2"><a class="reference internal" href="reqcontext/#how-the-context-works">How the Context Works</a></li> <li class="toctree-l2"><a class="reference internal" href="reqcontext/#callbacks-and-errors">Callbacks and Errors</a></li> <li class="toctree-l2"><a class="reference internal" href="reqcontext/#notes-on-proxies">Notes On Proxies</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="blueprints/">Modular Applications with Blueprints</a><ul> <li class="toctree-l2"><a class="reference internal" href="blueprints/#why-blueprints">Why Blueprints?</a></li> <li class="toctree-l2"><a class="reference internal" href="blueprints/#the-concept-of-blueprints">The Concept of Blueprints</a></li> <li class="toctree-l2"><a class="reference internal" href="blueprints/#my-first-blueprint">My First Blueprint</a></li> <li class="toctree-l2"><a class="reference internal" href="blueprints/#registering-blueprints">Registering Blueprints</a></li> <li class="toctree-l2"><a class="reference internal" href="blueprints/#nesting-blueprints">Nesting Blueprints</a></li> <li class="toctree-l2"><a class="reference internal" href="blueprints/#blueprint-resources">Blueprint Resources</a></li> <li class="toctree-l2"><a class="reference internal" href="blueprints/#building-urls">Building URLs</a></li> <li class="toctree-l2"><a class="reference internal" href="blueprints/#blueprint-error-handlers">Blueprint Error Handlers</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="extensions/">Extensions</a><ul> <li class="toctree-l2"><a class="reference internal" href="extensions/#finding-extensions">Finding Extensions</a></li> <li class="toctree-l2"><a class="reference internal" href="extensions/#using-extensions">Using Extensions</a></li> <li class="toctree-l2"><a class="reference internal" href="extensions/#building-extensions">Building Extensions</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="cli/">Command Line Interface</a><ul> <li class="toctree-l2"><a class="reference internal" href="cli/#application-discovery">Application Discovery</a></li> <li class="toctree-l2"><a class="reference internal" href="cli/#run-the-development-server">Run the Development Server</a></li> <li class="toctree-l2"><a class="reference internal" href="cli/#open-a-shell">Open a Shell</a></li> <li class="toctree-l2"><a class="reference internal" href="cli/#environment-variables-from-dotenv">Environment Variables From dotenv</a></li> <li class="toctree-l2"><a class="reference internal" href="cli/#environment-variables-from-virtualenv">Environment Variables From virtualenv</a></li> <li class="toctree-l2"><a class="reference internal" href="cli/#custom-commands">Custom Commands</a></li> <li class="toctree-l2"><a class="reference internal" href="cli/#plugins">Plugins</a></li> <li class="toctree-l2"><a class="reference internal" href="cli/#custom-scripts">Custom Scripts</a></li> <li class="toctree-l2"><a class="reference internal" href="cli/#pycharm-integration">PyCharm Integration</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="server/">Development Server</a><ul> <li class="toctree-l2"><a class="reference internal" href="server/#command-line">Command Line</a></li> <li class="toctree-l2"><a class="reference internal" href="server/#in-code">In Code</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="shell/">Working with the Shell</a><ul> <li class="toctree-l2"><a class="reference internal" href="shell/#command-line-interface">Command Line Interface</a></li> <li class="toctree-l2"><a class="reference internal" href="shell/#creating-a-request-context">Creating a Request Context</a></li> <li class="toctree-l2"><a class="reference internal" href="shell/#firing-before-after-request">Firing Before/After Request</a></li> <li class="toctree-l2"><a class="reference internal" href="shell/#further-improving-the-shell-experience">Further Improving the Shell Experience</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="patterns/">Patterns for Flask</a><ul> <li class="toctree-l2"><a class="reference internal" href="patterns/packages/">Large Applications as Packages</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/appfactories/">Application Factories</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/appdispatch/">Application Dispatching</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/urlprocessors/">Using URL Processors</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/sqlite3/">Using SQLite 3 with Flask</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/sqlalchemy/">SQLAlchemy in Flask</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/fileuploads/">Uploading Files</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/caching/">Caching</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/viewdecorators/">View Decorators</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/wtforms/">Form Validation with WTForms</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/templateinheritance/">Template Inheritance</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/flashing/">Message Flashing</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/javascript/">JavaScript, <code class="docutils literal notranslate"><span class="pre">fetch</span></code>, and JSON</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/lazyloading/">Lazily Loading Views</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/mongoengine/">MongoDB with MongoEngine</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/favicon/">Adding a favicon</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/streaming/">Streaming Contents</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/deferredcallbacks/">Deferred Request Callbacks</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/methodoverrides/">Adding HTTP Method Overrides</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/requestchecksum/">Request Content Checksums</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/celery/">Background Tasks with Celery</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/subclassing/">Subclassing Flask</a></li> <li class="toctree-l2"><a class="reference internal" href="patterns/singlepageapplications/">Single-Page Applications</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="web-security/">Security Considerations</a><ul> <li class="toctree-l2"><a class="reference internal" href="web-security/#resource-use">Resource Use</a></li> <li class="toctree-l2"><a class="reference internal" href="web-security/#cross-site-scripting-xss">Cross-Site Scripting (XSS)</a></li> <li class="toctree-l2"><a class="reference internal" href="web-security/#cross-site-request-forgery-csrf">Cross-Site Request Forgery (CSRF)</a></li> <li class="toctree-l2"><a class="reference internal" href="web-security/#json-security">JSON Security</a></li> <li class="toctree-l2"><a class="reference internal" href="web-security/#security-headers">Security Headers</a></li> <li class="toctree-l2"><a class="reference internal" href="web-security/#copy-paste-to-terminal">Copy/Paste to Terminal</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="deploying/">Deploying to Production</a><ul> <li class="toctree-l2"><a class="reference internal" href="deploying/#self-hosted-options">Self-Hosted Options</a></li> <li class="toctree-l2"><a class="reference internal" href="deploying/#hosting-platforms">Hosting Platforms</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="async-await/">Using <code class="docutils literal notranslate"><span class="pre">async</span></code> and <code class="docutils literal notranslate"><span class="pre">await</span></code></a><ul> <li class="toctree-l2"><a class="reference internal" href="async-await/#performance">Performance</a></li> <li class="toctree-l2"><a class="reference internal" href="async-await/#background-tasks">Background tasks</a></li> <li class="toctree-l2"><a class="reference internal" href="async-await/#when-to-use-quart-instead">When to use Quart instead</a></li> <li class="toctree-l2"><a class="reference internal" href="async-await/#extensions">Extensions</a></li> <li class="toctree-l2"><a class="reference internal" href="async-await/#other-event-loops">Other event loops</a></li> </ul> </li> </ul> </div> </section> <section id="api-reference"> <h2>API Reference<a class="headerlink" href="#api-reference" title="Link to this heading">¶</a></h2> <p>If you are looking for information on a specific function, class or method, this part of the documentation is for you.</p> <div class="toctree-wrapper compound"> <ul> <li class="toctree-l1"><a class="reference internal" href="api/">API</a><ul> <li class="toctree-l2"><a class="reference internal" href="api/#application-object">Application Object</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#blueprint-objects">Blueprint Objects</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#incoming-request-data">Incoming Request Data</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#response-objects">Response Objects</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#sessions">Sessions</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#session-interface">Session Interface</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#test-client">Test Client</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#test-cli-runner">Test CLI Runner</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#application-globals">Application Globals</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#useful-functions-and-classes">Useful Functions and Classes</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#message-flashing">Message Flashing</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#module-flask.json">JSON Support</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#template-rendering">Template Rendering</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#configuration">Configuration</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#stream-helpers">Stream Helpers</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#useful-internals">Useful Internals</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#signals">Signals</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#class-based-views">Class-Based Views</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#url-route-registrations">URL Route Registrations</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#view-function-options">View Function Options</a></li> <li class="toctree-l2"><a class="reference internal" href="api/#command-line-interface">Command Line Interface</a></li> </ul> </li> </ul> </div> </section> <section id="additional-notes"> <h2>Additional Notes<a class="headerlink" href="#additional-notes" title="Link to this heading">¶</a></h2> <div class="toctree-wrapper compound"> <ul> <li class="toctree-l1"><a class="reference internal" href="design/">Design Decisions in Flask</a><ul> <li class="toctree-l2"><a class="reference internal" href="design/#the-explicit-application-object">The Explicit Application Object</a></li> <li class="toctree-l2"><a class="reference internal" href="design/#the-routing-system">The Routing System</a></li> <li class="toctree-l2"><a class="reference internal" href="design/#one-template-engine">One Template Engine</a></li> <li class="toctree-l2"><a class="reference internal" href="design/#what-does-micro-mean">What does “micro” mean?</a></li> <li class="toctree-l2"><a class="reference internal" href="design/#thread-locals">Thread Locals</a></li> <li class="toctree-l2"><a class="reference internal" href="design/#async-await-and-asgi-support">Async/await and ASGI support</a></li> <li class="toctree-l2"><a class="reference internal" href="design/#what-flask-is-what-flask-is-not">What Flask is, What Flask is Not</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="extensiondev/">Flask Extension Development</a><ul> <li class="toctree-l2"><a class="reference internal" href="extensiondev/#naming">Naming</a></li> <li class="toctree-l2"><a class="reference internal" href="extensiondev/#the-extension-class-and-initialization">The Extension Class and Initialization</a></li> <li class="toctree-l2"><a class="reference internal" href="extensiondev/#adding-behavior">Adding Behavior</a></li> <li class="toctree-l2"><a class="reference internal" href="extensiondev/#configuration-techniques">Configuration Techniques</a></li> <li class="toctree-l2"><a class="reference internal" href="extensiondev/#data-during-a-request">Data During a Request</a></li> <li class="toctree-l2"><a class="reference internal" href="extensiondev/#views-and-models">Views and Models</a></li> <li class="toctree-l2"><a class="reference internal" href="extensiondev/#recommended-extension-guidelines">Recommended Extension Guidelines</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="contributing/">How to contribute to Flask</a><ul> <li class="toctree-l2"><a class="reference internal" href="contributing/#support-questions">Support questions</a></li> <li class="toctree-l2"><a class="reference internal" href="contributing/#reporting-issues">Reporting issues</a></li> <li class="toctree-l2"><a class="reference internal" href="contributing/#submitting-patches">Submitting patches</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="license/">BSD-3-Clause License</a></li> <li class="toctree-l1"><a class="reference internal" href="changes/">Changes</a><ul> <li class="toctree-l2"><a class="reference internal" href="changes/#version-3-1-1">Version 3.1.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-3-1-0">Version 3.1.0</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-3-0-3">Version 3.0.3</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-3-0-2">Version 3.0.2</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-3-0-1">Version 3.0.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-3-0-0">Version 3.0.0</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-2-3-3">Version 2.3.3</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-2-3-2">Version 2.3.2</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-2-3-1">Version 2.3.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-2-3-0">Version 2.3.0</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-2-2-5">Version 2.2.5</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-2-2-4">Version 2.2.4</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-2-2-3">Version 2.2.3</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-2-2-2">Version 2.2.2</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-2-2-1">Version 2.2.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-2-2-0">Version 2.2.0</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-2-1-3">Version 2.1.3</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-2-1-2">Version 2.1.2</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-2-1-1">Version 2.1.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-2-1-0">Version 2.1.0</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-2-0-3">Version 2.0.3</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-2-0-2">Version 2.0.2</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-2-0-1">Version 2.0.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-2-0-0">Version 2.0.0</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-1-1-4">Version 1.1.4</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-1-1-3">Version 1.1.3</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-1-1-2">Version 1.1.2</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-1-1-1">Version 1.1.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-1-1-0">Version 1.1.0</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-1-0-4">Version 1.0.4</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-1-0-3">Version 1.0.3</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-1-0-2">Version 1.0.2</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-1-0-1">Version 1.0.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-1-0">Version 1.0</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-12-5">Version 0.12.5</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-12-4">Version 0.12.4</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-12-3">Version 0.12.3</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-12-2">Version 0.12.2</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-12-1">Version 0.12.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-12">Version 0.12</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-11-1">Version 0.11.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-11">Version 0.11</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-10-1">Version 0.10.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-10">Version 0.10</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-9">Version 0.9</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-8-1">Version 0.8.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-8">Version 0.8</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-7-2">Version 0.7.2</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-7-1">Version 0.7.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-7">Version 0.7</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-6-1">Version 0.6.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-6">Version 0.6</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-5-2">Version 0.5.2</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-5-1">Version 0.5.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-5">Version 0.5</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-4">Version 0.4</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-3-1">Version 0.3.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-3">Version 0.3</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-2">Version 0.2</a></li> <li class="toctree-l2"><a class="reference internal" href="changes/#version-0-1">Version 0.1</a></li> </ul> </li> </ul> </div> </section> </section> <div class="clearer"></div> </div> </div> </div> <span id="sidebar-top"></span> <div class="sphinxsidebar" role="navigation" aria-label="Main"> <div class="sphinxsidebarwrapper"> <h3>Project Links</h3> <ul> <li><a href="https://palletsprojects.com/donate">Donate</a> <li><a href="https://pypi.org/project/Flask/">PyPI Releases</a> <li><a href="https://github.com/pallets/flask/">Source Code</a> <li><a href="https://github.com/pallets/flask/issues/">Issue Tracker</a> <li><a href="https://discord.gg/pallets">Chat</a> </ul> <h3>Contents</h3> <ul> <li><a class="reference internal" href="#">Welcome to Flask</a><ul> <li><a class="reference internal" href="#user-s-guide">User’s Guide</a></li> <li><a class="reference internal" href="#api-reference">API Reference</a></li> <li><a class="reference internal" href="#additional-notes">Additional Notes</a></li> </ul> </li> </ul> <search id="searchbox" style="display: none" role="search"> <h3 id="searchlabel">Quick search</h3> <div class="searchformwrapper"> <form class="search" action="search/" method="get"> <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/> <input type="submit" value="Go" /> </form> </div> </search> <script>document.getElementById('searchbox').style.display = "block"</script><div id="ethical-ad-placement"></div> </div> </div> <div class="clearer"></div> </div> <div class="footer" role="contentinfo"> © Copyright 2010 Pallets. Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. </div> </body> </html>