Python Web Development: Building Web Applications with Flask and Django

·

6 min read

Python Web Development: Building Web Applications with Flask and Django

Introduction

Python's versatility is one of its key strengths; As a result of that, it is extensively used in many domains, one among them being web development. In this part of our comprehensive Python guide, we will explore two popular frameworks for web development in Python: Flask and Django. We will cover the fundamentals of both frameworks and assist you in building your first web application using each of them. Additionally, we will highlight the differences between Flask and Django and understand what a good approach might be for building robust and scalable web applications.

Flask: A Lightweight Web Framework

Flask is a micro web framework that is simple, lightweight, and easy to learn. It provides essential functionalities for building web applications without imposing strict rules or conventions.

Building a Simple Web Application with Flask

Step 1: Install Flask

Make sure you have Python installed. Open your terminal and run the following command to install Flask:

pip install Flask

Step 2: Create a Flask App

Create a new Python file, app.py, and add the following code:

from flask import Flask

app = Flask(__name__)

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

if __name__ == '__main__':
    app.run()

In this code, we import the Flask class from the flask module. We then create an instance of the Flask class and define a route for the root URL '/'. When a user visits the root URL, the hello() function will be executed, which returns the message "Hello, Flask!"

Step 3: Run the Flask App

Save the app.py file and run the Flask app using the following command in your terminal:

python app.py

Output

When you run the Flask application using the app.py file, you should see an output similar to the following in your terminal:

* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Now, open your web browser and visit http://127.0.0.1:5000/. You should see the message "Hello, Flask!" displayed on the page.

Django, on the other hand, is a full-featured web framework that follows the "batteries-included" philosophy. It includes everything needed to build complex web applications, such as an ORM, admin interface, authentication system, and more.

In Django, a web application follows a specific structure with several important files and directories:

  1. manage.py: This is a command-line utility that allows you to interact with your Django project. You can use it to run development servers, create database tables, and perform various tasks.

  2. myproject/urls.py: This file contains the URL patterns and maps them to the corresponding views.

  3. myapp/views.py: This file contains the view functions that handle HTTP requests and return HTTP responses. Views define the logic of your web application.

  4. myapp/templates/: This directory stores HTML templates that are used to render the web pages. Templates allow you to separate the presentation from the logic in your views.

Building a Simple Web Application with Django

Step 1: Install Django

Make sure you have Python installed. Open your terminal and run the following command to install Django:

pip install django

Step 2: Create a Django Project and App

In your terminal, navigate to your desired project directory and run the following commands:

django-admin startproject myproject
cd myproject
python manage.py startapp myapp

Step 3: Configure the Django App

Edit myapp/views.py and add the following code:

from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello, Django!")

Step 4: Define URL Patterns

Edit myproject/urls.py and add the following code to define URL patterns:

from django.urls import path
from myapp.views import hello

urlpatterns = [
    path('', hello),
]

Step 5: Create a Template

Create a new directory named templates inside the myapp directory. Inside the templates directory, create a new file named hello.html and add the following HTML code:

<!DOCTYPE html>
<html>
<head>
    <title>Hello Django</title>
</head>
<body>
    <h1>Hello, Django!</h1>
</body>
</html>

Step 6: Configure Template Settings

In settings.py (inside myproject directory), add the TEMPLATES setting to specify the location of the template directory:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'myapp', 'templates')],
        'APP_DIRS': True,
        ...
    },
]

Step 7: Run the Django App

Save your changes and run the Django development server using the following command:

python manage.py runserver

Output

When you run the Django application using the python manage.py runserver command, you should see output similar to the following in your terminal:

Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

Now, open your web browser and visit http://127.0.0.1:8000/. You should see the message "Hello, Django!" displayed on the page.

Please note that the port numbers (5000 for Flask and 8000 for Django) may vary based on the configuration or availability of ports on your system. The web applications will continue running in the terminal until you stop them manually by pressing CTRL+C.

Comparing Flask and Django for Simple Web Applications

  • Complexity: Flask is lightweight and leaves many architectural decisions to developers. Django, on the other hand, is a full-fledged framework with a well-defined structure and conventions.

  • Modularity: Flask provides flexibility in choosing the components you need, while Django includes all essential components out of the box.

  • Database Support: Django comes with its built-in ORM, while Flask requires you to choose and configure the ORM or database adapter separately.

  • Community and Ecosystem: Django has a larger and more established community with an extensive collection of third-party packages. Flask has a more minimalistic ecosystem but still offers many extensions.

Tips and Best Practices for Python Web Development

  • Choose the Right Framework: Consider your project requirements and complexity when choosing between Flask and Django. Flask is great for small to medium-sized projects, while Django is suitable for larger applications with complex features.

  • Use Virtual Environments: Always create a virtual environment for your projects to manage dependencies and isolate them from the system's Python environment.

  • Security Considerations: Ensure you implement secure coding practices, such as input validation, CSRF protection, and SQL injection prevention.

  • Code Organization: Follow a modular and structured approach to keep your codebase clean and maintainable. Use Blueprints in Flask and Django apps for better code organization.

  • Deployment: Choose the right web server (e.g., Gunicorn, uWSGI) and consider using Nginx or Apache as a reverse proxy for production deployment.

  • Testing: Write unit tests to ensure the correctness of your application and automate testing using frameworks like pytest.

Conclusion

In this guide, we explored how to build a simple web application using both Flask and Django. Flask offers simplicity and flexibility, making it great for small to medium-sized projects. Django provides a comprehensive set of tools and a structured approach, suitable for larger applications. Both frameworks have their strengths, and the choice depends on your project's requirements and complexity. Start building amazing web applications with Python and choose the framework that aligns with your needs. Happy coding!

Did you find this article valuable?

Support Sanjay's blog by becoming a sponsor. Any amount is appreciated!