Facebook Pixel

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

15 Nov, 2024

Flask là một microframework web viết bằng Python cực kì tối giản nhưng hiệu quả, bạn không bị ràng buộc bởi các công cụ hay thư viện mặc định.

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

Mục Lục

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í Flask Django
Loại framework Microframework (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ới Phức tạp hơn do có nhiều thành phần tích hợp
Tính linh hoạt Cao, 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ự án Nhanh chóng, không cần cài đặt nhiều Dà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ệu Tùy chọn sử dụng các thư viện như SQLAlchemy ORM tích hợp sẵn, hỗ trợ nhiều loại cơ sở dữ liệu
Hỗ trợ API REST Không tích hợp sẵn, cần thêm thư viện như Flask-RESTful Tí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ý form Cần sử dụng thư viện bổ sung như Flask-WTF Hỗ trợ xử lý form và validation tích hợp trong Django
Cộng đồng Cộ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ộng Có thể mở rộng thông qua các extension Có thể mở rộng qua các package và app của Django
Khả năng tùy biến Tùy biến linh hoạt theo ý tưởng của lập trình viên Tù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 Blueprints Có hỗ trợ Blueprints để quản lý các module của ứng dụng lớn Khô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ổ sung Sử 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:

Bài viết liên quan

Lập trình backend expressjs

xây dựng hệ thống microservices
  • Kiến trúc Hexagonal và ứng dụngal font-
  • TypeScript: OOP và nguyên lý SOLIDal font-
  • Event-Driven Architecture, Queue & PubSubal font-
  • Basic scalable System Designal font-

Đăng ký nhận thông báo

Đừng bỏ lỡ những bài viết thú vị từ 200Lab