Flask là gì? Hướng dẫn tạo Ứng dụng Web với Flask

Flask là gì? Hướng dẫn tạo Ứng dụng Web với Flask
0 Shares

Nếu bạn đang tìm kiếm một framework phát triển web đơn giản, linh hoạt và phù hợp cho cả người mới bắt đầu lẫn lập trình viên nhiều năm kinh nghiệm, thì Flask có thể là lựa chọn hoàn hảo dành cho bạn.

Trong bài viết này, chúng ta sẽ khám phá khái niệm cơ bản về  Flask, so sánh nó với Django, tìm hiểu cấu trúc chuẩn cho một dự án Flask và thực hành tạo một ứng dụng web đơn giản.

1. Flask là gì?

Flask là một microframework web viết bằng Python cực kì tối giản nhưng hiệu quả. Không giống như Django, Flask mang đến cho các lập trình viên quyền kiểm soát nhiều hơn, bạn không bị ràng buộc bởi các công cụ hay thư viện mặc định mà  có thể tự do chọn các thư viện bên ngoài sao cho phù hợp nhất cho dự án. Flask đặt biệt phù hợp với những ai ưa thích sự linh hoạt và cấu trúc tối giản.

Các tính năng chính của Flask:

  • Nhẹ và Linh Hoạt: Bạn có thể chọn chính xác những thành phần mà mình cần, không bị ép buộc phải dùng cấu trúc có sẵn.
  • Server Tích Hợp: Flask có một server tích hợp sẵn, giúp kiểm thử ứng dụng ngay trên máy local.
  • Jinja2 Templating Engine: Tích hợp công cụ Jinja2, hỗ trợ bạn tạo các trang web động một cách hiệu quả.
  • Hỗ Trợ Tiện Ích Mở Rộng: Flask có nhiều tiện ích mở rộng, như xác thực, ORM, …

2. So sánh Flask và Django

Khi nhắc đến phát triển web bằng Python, hai framework phổ biến nhất là FlaskDjango luôn là lựa chọn hàng đầu của các lập trình viên. Mỗi framework đều có những điểm mạnh và hạn chế riêng, phù hợp với các mục đích và quy mô dự án khác nhau. Bên dưới là bảng so sánh chi tiết 2 framework này.

Tiêu chíFlaskDjango
Loại frameworkMicroframework (nhẹ, linh hoạt)Full-stack framework (bao gồm tất cả công cụ cần thiết)
Nguyên lý thiết kế“Chỉ thêm những gì bạn cần”“Batteries included” (tích hợp sẵn nhiều tính năng)
Độ phức tạpĐơn giản, dễ học cho người mớiPhức tạp hơn do có nhiều thành phần tích hợp
Tính linh hoạtCao, phù hợp để tùy chỉnh ứng dụng nhỏ và trung bìnhÍt linh hoạt hơn, thích hợp cho các ứng dụng lớn với cấu trúc rõ ràng
Thời gian khởi tạo dự ánNhanh chóng, không cần cài đặt nhiềuDài hơn do có nhiều cấu hình mặc định và các thành phần tích hợp
Quản lý cơ sở dữ liệuTùy chọn sử dụng các thư viện như SQLAlchemyORM tích hợp sẵn, hỗ trợ nhiều loại cơ sở dữ liệu
Hỗ trợ API RESTKhông tích hợp sẵn, cần thêm thư viện như Flask-RESTfulTích hợp Django REST framework để xây dựng API
Quy mô ứng dụngỨng dụng nhỏ đến trung bình (MVP, microservices)Ứng dụng lớn, phức tạp (ứng dụng thương mại, hệ thống doanh nghiệp)
Hỗ trợ xử lý formCần sử dụng thư viện bổ sung như Flask-WTFHỗ trợ xử lý form và validation tích hợp trong Django
Cộng đồngCộng đồng nhỏ hơn nhưng có tài liệu phong phúCộng đồng lớn, tài liệu phong phú và có nhiều hướng dẫn
Khả năng mở rộngCó thể mở rộng thông qua các extensionCó thể mở rộng qua các package và app của Django
Khả năng tùy biếnTùy biến linh hoạt theo ý tưởng của lập trình viênTùy biến bị giới hạn, phải tuân thủ các nguyên tắc mặc định
Hỗ trợ kiến trúc BlueprintsCó hỗ trợ Blueprints để quản lý các module của ứng dụng lớnKhông có kiến trúc Blueprints nhưng có khả năng quản lý ứng dụng lớn qua apps
Thư viện bổ sungSử dụng nhiều thư viện bên thứ ba cho các tính năng mở rộngĐa số tính năng phổ biến đã tích hợp sẵn, có thể dùng thêm package khác

💡

Flask được đánh giá cao vì tính linh hoạt, dễ tiếp cận lúc đầu, và phù hợp cho các dự án nhỏ hoặc MVP (Minimum Viable Product).

Django nổi bật với cách tiếp cận “batteries-included” – tích hợp sẵn nhiều tính năng mạnh mẽ và rất thích hợp cho các ứng dụng phức tạp, yêu cầu cấu trúc rõ ràng.

3. Hướng dẫn tạo Ứng dụng Web với Flask

3.1 Cài đặt Flask

Trước tiên, bạn cần đảm bảo đã cài Python trên máy. Sau đó, mở terminal và chạy câu lệnh sau.

Bash

pip install Flask

3.2 Cấu trúc ứng dụng Flask

Khi ứng dụng lớn dần, hãy tổ chức dự án của bạn với cấu trúc như sau:

Python

project/
├── app/
│   ├── __init__.py       # Khởi tạo ứng dụng Flask
│   ├── routes.py         # Định nghĩa các route (URL)
│   ├── models.py         # Định nghĩa model cơ sở dữ liệu
│   ├── forms.py          # Xử lý các form
│   ├── templates/        # HTML template files
│   │   └── base.html     # Template cơ bản
│   ├── static/           # CSS, JavaScript, Images
│       ├── css/
│       ├── js/
│       └── images/
├── venv/                 # Môi trường ảo
├── app.py                # Entry point
├── requirements.txt      # Các thư viện cần thiết
├── config.py             # Cấu hình ứng dụng

3.3 Tạo một ứng dụng Flask với cấu trúc chuẩn

  • Copy nội dung sau đây vào file __init__.py, file này dùng để khởi tạo ứng dụng Flask.

Python

from flask import Flask

def create_app():
    app = Flask(__name__)

    # Đăng ký các route từ routes.py
    from .routes import main
    app.register_blueprint(main)

    return app
  • routes.py: Chứa các route để điều hướng người dùng đến các trang.

Python

from flask import Blueprint, render_template

# Khởi tạo Blueprint
main = Blueprint('main', __name__)

@main.route('/')
def home():
    return render_template('index.html')

@main.route('/about')
def about():
    return render_template('about.html')
  • templates/base.html: Template cơ bản, được kế thừa bởi các trang khác.

HTML

<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}Flask App{% endblock %}</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
</head>
<body>
    <header>
        <nav>
            <a href="/">Home</a>
            <a href="/about">About</a>
        </nav>
    </header>
    <main>
        {% block content %}{% endblock %}
    </main>
</body>
</html>
  • templates/index.html: Trang chủ của ứng dụng.

HTML

{% extends "base.html" %}

{% block title %}Home{% endblock %}

{% block content %}
<h1>Welcome to Flask!</h1>
<p>This is a simple Flask app.</p>
{% endblock %}
  • templates/about.html: Trang “About”.

HTML

{% extends "base.html" %}

{% block title %}About{% endblock %}

{% block content %}
<h1>About Us</h1>
<p>This is the about page.</p>
{% endblock %}
  • app.py:File chính để chạy ứng dụng.

Python

udhcdsfrom app import create_app

app = create_app()

if __name__ == '__main__':
    app.run(debug=True)
  • requirements.txt: Liệt kê các thư viện cần thiết.

Txt

Flask
  • Mở terminal và cài đặt các thư viện bằng câu lệnh sau

Bash

pip install -r requirements.txt

3.4 Chạy ứng dụng

Mở terminal và chạy ứng dụng bằng câu lệnh sau

Bash

python app.py

Bạn đã có thể truy cập trang web tại địa chỉ http://127.0.0.1:5000.

4. Kết luận

Bài hướng dẫn này rất đơn giản nhưng đủ để xây dựng một ứng dụng Flask cơ bản với giao diện đẹp và rõ ràng. Bạn có thể dễ dàng mở rộng bằng cách thêm các route mới hoặc tùy chỉnh giao diện trong thư mục templates.

Các bài viết liên quan:

  • Domain-Driven Design (DDD) là gì? Ví dụ dễ hiểu về DDD
  • Test-Driven Development (TDD) là gì? Hướng dẫn thực hành TDD
  • Microservices là gì? So sánh Microservices và Monolithic
  • CRUD là gì? Vì sao Developer cần phải thành thạo CRUD?