Skip to main content

Understanding routes in Flask

In this article, we will delve into one of the core components of Flask: routing. Flask is a micro web framework, which means it doesn't come with any extra libraries like form validation or database abstraction. But it does provide a powerful routing system, which allows you to map URLs to Python functions.

What is Routing?

In simple terms, routing is the process of connecting URLs to Python functions. When a user visits a URL on your website, the Flask application checks the URL against a list of routes. If it finds a match, it calls the associated Python function and returns the result to the user.

Basic Routing in Flask

In Flask, a route is defined using the @app.route() decorator followed by a function. Here is an example:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
return "Hello, Flask!"

In the above example, we've defined a route for the URL '/'. The function home is connected to this URL. When a user visits http://localhost:5000/, they will see the text "Hello, Flask!".

The string '/' in the @app.route() decorator is the URL to be matched. The function home is the function to be executed when the URL is visited.

Dynamic Routing

Flask also supports dynamic routing, where parts of the URL can be variable. This is useful when you want to create URLs based on user input or database entries. Let's look at an example:

@app.route('/user/<username>')
def show_user_profile(username):
return 'User %s' % username

In this example, the URL contains a variable part, <username>, which is a placeholder for any text. When a user visits a URL like http://localhost:5000/user/john, the show_user_profile function is called with 'john' as the argument for username.

URL Converters

Flask supports several types of URL converters, which allow you to control the type and format of the variable parts of your URLs. Here are a few examples:

  • <int:id>: accepts integer values
  • <float:rev>: accepts float values
  • <path:subpath>: accepts slashes used as directory separators

Here's an example of using a URL converter:

@app.route('/post/<int:post_id>')
def show_post(post_id):
return 'Post %d' % post_id

In this example, the URL contains a variable part, <int:post_id>, which only accepts integer values. If a user visits a URL like http://localhost:5000/post/5, the show_post function is called with 5 as the argument for post_id.

Conclusion

Routing is a powerful feature of Flask that allows you to create dynamic and interactive web applications. By mapping URLs to Python functions, you can control what users see when they visit different parts of your website. Whether you're creating a simple blog or a complex web application, understanding routing is an essential part of Flask development.