Flask is a micro web framework written in Python. It is based on Werkzeug WSGI toolkit and Jinja2 templating engine. Flask implements the model-view-controller (MVC) pattern, where the controller is the Python code, views are templates, and models are the application's data. All Flask apps must create a Flask object instance, which acts as a central registry and WSGI application object. Flask uses route decorators to map URLs to view functions that generate responses. Templates are rendered with the Jinja2 engine by passing context variables.