What is Flask?
Flask is a lightweight web framework for Python. It helps you create web servers, define URLs (routes), and serve content — all with minimal code.
It’s perfect for beginners and small to medium projects because:
- It’s simple and flexible
- Has a clean and intuitive API
- Lets you add only what you need
Step 1: Install Flask
First, install Flask using pip:
pip install FlaskStep 2: Create Your First Flask App
Create a file called app.py with this code:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def home():
return "Hello, Flask!"
if __name__ == "__main__":
app.run(debug=True)Step 3: Run Your App
In your terminal, run:
python app.pyYou’ll see something like:
* Running on http://127.0.0.1:5000/Open your browser and go to http://127.0.0.1:5000/. You should see:
Hello, Flask!Step 4: Understand Routes
Routes define URLs and what happens when a user visits them.
Try adding another route:
@app.route("/about")
def about():
return "This is the about page."Restart your app and visit http://127.0.0.1:5000/about
Step 5: Returning HTML Templates
Instead of plain text, you can return HTML. Create a folder called templates, then create a file index.html inside it:
<!DOCTYPE html>
<html>
<head>
<title>My Flask App</title>
</head>
<body>
<h1>Welcome to Flask!</h1>
</body>
</html>Modify app.py to render this template:
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def home():
return render_template("index.html")Restart the server and reload your homepage.
Step 6: Handling User Input (Forms)
Create a simple form in templates/form.html:
<!DOCTYPE html>
<html>
<body>
<form action="/greet" method="POST">
<input type="text" name="username" placeholder="Enter your name">
<input type="submit" value="Submit">
</form>
</body>
</html>Add these routes to app.py:
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route("/form")
def form():
return render_template("form.html")
@app.route("/greet", methods=["POST"])
def greet():
name = request.form.get("username")
return f"Hello, {name}!"Visit http://127.0.0.1:5000/form to try it out.
Bonus Tips:
- Use
debug=Trueduring development to auto-reload and get detailed errors - Explore Flask extensions like Flask-SQLAlchemy for databases or Flask-Login for authentication
- Break your app into modules as it grows