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à Flask và Django 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 |
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.
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:
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.
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.
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.
<!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.
{% 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".
{% 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.
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.
Flask
- Mở terminal và cài đặt các thư viện bằng câu lệnh sau
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
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
Cách Discord Lưu Trữ Hàng Nghìn Tỷ Tin Nhắn Với ScyllaDB
Dec 06, 2024 • 9 min read
Idempotent Consumer: Xử lý thông điệp trùng lặp trong Microservices
Dec 04, 2024 • 7 min read
Hướng dẫn tích hợp Redux và React Query trong dự án React Vite
Nov 22, 2024 • 8 min read
Giới thiệu Kiến trúc Backend for Frontend (BFF)
Nov 16, 2024 • 10 min read
Webhook là gì? So sánh Webhook và API
Nov 15, 2024 • 8 min read
Spring Boot là gì? Hướng dẫn Khởi tạo Project Spring Boot với Docker
Nov 14, 2024 • 6 min read