In Development Last updated:
Share on:
Cloudways offers managed cloud hosting for any size business to host a website or complex web applications.

Python Flask is a microframework for building web applications in Python.

It is a very flexible and customizable framework that makes learning easy. As a result, it is a popular choice when building web servers. This article introduces Python Flask: what it is, how it compares to other frameworks, and how to create a basic application in Python.

What is Flask?

Flask is a framework for building web servers in Python. Unlike other frameworks, it does not force the developer to conform to a particular directory structure.

In addition, it is unopinionated, allowing you to use whichever tools you prefer to perform actions such as connecting to a database and validating form inputs.

As mentioned, Flask is used to build web servers. A web server is software that responds to HTTP requests with the appropriate data and files.

Flask vs. Other Frameworks

This section will briefly compare Flask to two other popular frameworks – Django and Fast API. We will cover the benefits and limitations of using Flask over the other frameworks.

Flask vs. Django

Flask is a lightweight micro-framework. It offers developers simplicity and flexibility, allowing you to build as you go. However, this means you must do a lot of work yourself.

On the other hand, Django is a “batteries-included” framework that comes with many preconfigured tools. This enables you to build and ship faster. However, Django is not very flexible and has a steeper learning curve.

As a result, Flask is used for small and medium-sized projects, while Django is used for larger and more complex projects.

Also read: Differences Between Flask and Django

Flask vs. FastAPI

FastAPI is a relatively new framework for building APIs in Python. It is fast and easy to use. It provides built-in monitoring as a feature. However, it is a new framework with a relatively small ecosystem and community. In addition, its use is limited to APIs.

In contrast, Flask is more versatile as it can be used for both APIs and rendering static files. It is lightweight and relatively easy. However, it is slower than FastAPI.

Flask is best suited for web applications where you must render HTML, while FastAPI should be used to build APIs.

Also read: FastAPI vs. Flask: Which of the Two is Right For You?

How to Create an Application in Flask

In this section, we will build a simple Flask app to display some HTML and provide data through an API. The point of this is not to provide a comprehensive tutorial to Flask. Rather, the aim is to show you briefly what building a Flask app would look like.


To follow this tutorial, you have to understand Python 3. In addition, familiarity with HTTP would be useful, though not required.

To create an application in Flask, you need to install Python first. If you need a guide on how to do so, here’s a video to guide you:

Create a Virtual Environment

First, create a project folder for the application. I am running my commands in Bash Terminal; therefore, I create a folder using the following command:

mkdir flask-tut

Next, navigate inside the folder using the command:

cd flask-tut

After navigating into the folder, create a virtual environment using this command. This ensures that the dependencies we will install do not conflict with dependencies from other projects.

python3 -m venv venv

This should create a venv folder, which you can see with the command:


Activate Virtual Environment

Activating a virtual environment is easy. Using the Bash terminal, enter the command:

source venv/bin/activate

Your terminal prompt should change from this $ to this (venv) $.

For more information, here’s an article on virtual environments in Python.

Install Flask

With a virtual environment, we can proceed to install Flask. For that, we will use pip:

pip install Flask

That should download some files and install dependencies.

Serving Some HTML

Next, we can begin working on the file. This file will be the application’s entry point.


After creating the file, open it with your preferred editor and add the following code:

from flask import Flask

app = Flask(__name__)

def index():
    return '<h1>Hello from Flask!</h1>'

In the above code snippet, we started by importing the Flask class. Next, we instantiated the Flask class, passing in the __name__ variable. This is a built-in variable storing the name of the current module. Flask needs this to know where to find files. We stored the instance of Flask in the app variable.

Next, we created a function called index. This function returns the HTML we want to display to the user. Before the function definition, we used the @app.route decorator. This decorator converts a regular function into a Flask view function. This means the function’s return value will be converted to an HTML response.

To run the application, we use the command:

flask --app main run

The –app flag specifies where the application is. In this case, in The server should start running.

And if you open the browser on http://localhost:5000 or, you should see an h1:

Writing all our HTML in our Python code would generally be bad. Ideally, we would want to separate the Python from the HTML. The next section will look at how to serve standalone HTML files.

Serving an HTML File

In this section, we will write the code to serve an index.html file for our website. First, let’s create the index.html file. We will create this file inside the templates folder because that is where Flask looks for our HTML template

touch template/index.html

Next, open the file using your preferred editor and add the following code:

<!DOCTYPE html>
<html lang="en">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Flask Website</title>
	<h1>Hello from Flask!</h1>

Next, reopen the file we created earlier. Then add the following import at the top, just after the Flask import:

from flask import render_template

The render_template function we just imported enables us to serve HTML templates. To render an HTML file, we modify the index function to look like this:

def index():
    return render_template('index.html')

Stop the server (Ctrl + C) and restart it using the following command:

flask --app main run

Reload the browser window, and you should see the following.

In this example, we are displaying a static HTML page. With Flask, you can also display templates by creating HTML templates and providing data. These templates follow the Jinja syntax. We will not cover this here for brevity, but I will link some good resources to learn Flask later.

Creating an API Route

Displaying HTML content is one function of web applications. The other is to serve data through an API route. In Flask, it is also easy to set up API routes. Add this code to the file to create an API route at ‘/data’.

def data():
    return { "status": "OK", "msg": "Hello from Flask API" }

If a function returns a dict or list, the value is converted to JSON and sent as a response. If you restart the server and open http://localhost:5000/data, you should see the following:

Resources to Learn Flask

❇️ The Flask documentation is excellent for learning. It is well-structured, clear, and is probably the most reliable resource for learning Flask.

❇️ freeCodeCamp also has a great YouTube video on Flask. freeCodeCamp is a household name for free but great-quality learning resources.

❇️ This Udemy course is a good way to learn how to build enterprise-grade APIs in Flask. It covers tools such as Flask-SQLALchemy and Flask-Smorest.


This article was a brief introduction to Python Flask. We covered what it is, compared it to other web frameworks, and built a simple application. Lastly, I linked resources for further learning.

Next, check out how to secure a Flask REST API with a JSON web token.

Share on:
  • Anesu Kafesu
    I am a Software Engineer specialising in Web Development, Mobile Application Development and Artificial Intelligence. I occasionally write on the same topics.
  • Rashmi Sharma

    Rashmi is a highly experienced content manager, SEO specialist, and data analyst with over 7 years of expertise. She has a solid academic background in computer applications and a keen interest in data analysis.

    Rashmi is…

Thanks to our Sponsors

More great readings on Development

Power Your Business

Some of the tools and services to help your business grow.
  • The text-to-speech tool that uses AI to generate realistic human-like voices.

    Try Murf AI
  • Web scraping, residential proxy, proxy manager, web unlocker, search engine crawler, and all you need to collect web data.

    Try Brightdata
  • is an all-in-one work OS to help you manage projects, tasks, work, sales, CRM, operations, workflows, and more.

    Try Monday
  • Intruder is an online vulnerability scanner that finds cyber security weaknesses in your infrastructure, to avoid costly data breaches.

    Try Intruder