Cách đưa app Django vào chế độ bảo trì

Đặt app Django vào chế độ bảo trì rất quan trọng khi tiến hành update, sửa lỗi kỹ thuật hoặc tạo thay đổi đáng kể cho ứng dụng. Dưới đây là chi tiết cách thực hiện.

App Django

Bằng cách tạm thời hạn chế quyền truy cập của người dùng và hiện một trang bảo trì, bạn có thể truyền tải những thông điệp quan trọng, đảm bảo quá trình update mượt mà và ngăn xung đột tiềm ẩn hay mất dữ liệu.

Dù hiện đang là một lập trình viên hay quản trị hệ thống, hiểu cách triển khai chế độ bảo trì trong Django sẽ cho phép bạn duy trì một ứng dụng thân thiện và đáng tin cậy.

Cách dùng gói Django-Maintenace-Mode

Nhờ hỗ trợ từ cộng đồng rộng lớn, Django cung cấp một loạt các gói có thể nâng cao đáng kể quy trình phát triển của bạn, cho phép bạn làm việc nhanh chóng và hiệu quả hơn. Những gói này giảm bớt gánh nặng phải lặp lại tác vụ, đảm bảo trải nghiệm mượt mà hơn cho lập trình viên.

Một trong số các gói được cung cấp bởi Django là gói django-maintenance-mode mà bạn có thể dùng để đặt app Django vào chế độ bảo trì. Gói django-maintenance-mode hoạt động bằng cách hiện một trang cho code trạng thái HTTP 503. Bạn có thể dùng django-maintenance-mode trong ứng dụng theo những bước sau:

Bước 1: Cài đặt django-maintenance-mode trong môi trường ảo

1. Trong môi trường ảo của dự án, cài đặt gói này với trình quản lý gói pip của Python. Chạy lệnh bên dưới trong giao diện dòng lệnh (CLI):

pip install django-maintenance-mode

2. Sau khi cài đặt gói này, thêm maintenace_mode vào danh sách
INSTALLED_APPS trong file settings.py:

INSTALLED_APPS = [
    # một số app khác,
    'maintenance_mode',
]

3. Tiếp theo, thêm middleware cho django-maintenance-mode vào MIDDLEWARE trong file settings.py:

MIDDLEWARE = [
    # Một số middleware khác của django,
    'maintenance_mode.middleware.MaintenanceModeMiddleware',
]

Bước 2: Tạo một mẫu HTML để hiện thông báo cho chế độ bảo trì

Đối với gói django-maintenance-mode hiện trang lỗi 503, nó tìm một file mẫu 503.html trong thư mục templates. Để thiết lập nó, hãy làm như sau:

1. Tạo thư mục tên templates trong thư mục gốc.

2. Mở thư mục templates đã tạo mới và tạo file tên 503.html.

3. Trong file settings, chọn cài đặt TEMPLATES và cấu hình danh sách DIRS bên trong nó như sau:

'DIRS': [BASE_DIR/'templates'],

4. Mở file 503.html và viết code HMTL để hiện một thông báo lỗi tới người dùng. Đây là code mẫu mà bạn có thể sử dụng:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>503 Service Unavailable</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f5f5f5;
            margin: 0;
            padding: 0;
        }
        
        .container-503 {
            max-width: 600px;
            margin: 100px auto;
            text-align: center;
        }
        
        h1 {
            font-size: 48px;
            color: #333333;
            margin-bottom: 20px;
        }
        
        p {
            font-size: 18px;
            color: #666666;
            margin-bottom: 30px;
        }
        
        .btn-503 {
            display: inline-block;
            padding: 12px 24px;
            background-color: #007bff;
            color: #ffffff;
            text-decoration: none;
            border-radius: 4px;
            font-size: 18px;
        }
    </style>
</head>
<body>
    <div class = "container-503">
        <h1>503 Service Unavailable</h1>
        <p>
            Oops! We are currently working on some updates. 
            We apologize for the inconvenience and appreciate your patience.
        </p>
        <p>Please visit the website later or contact our support team</p>
        <a href = "mailto:support@yourcompanymail.com" class = "btn-503">
            Contact support
        </a>
    </div>
</body>
</html>

Bước 3: Bật chế độ bảo trì và khởi động lại server

Trong file settings.py, thêm code này để bật chế độ bảo trì:

MAINTENANCE_MODE = True

Khởi động lại server phát triển bằng cách chạy lệnh sau vào CLI:

python manage.py runserver

Khi điều hướng tới web, bạn sẽ thấy trang bảo trì đã tạo.

Trang báo lỗi bảo trì 503

Cách bỏ qua trang admin trong chế độ bảo trì Django

Để cho phép trang admin tiếp tục hoạt động ngay cả khi ở chế độ bảo trì, django-maintenance-mode cung cấp cài đặt tên MAINTENANCE_MODE_IGNORE_ADMIN_SITE. Bạn sẽ thêm cài đặt này vào file settings.py và đặt nó sang True:

MAINTENANCE_MODE_IGNORE_ADMIN_SITE = True

Giá trị mặc định của cài đặt trên là False, vì thế, trang admin ở đây sẽ bị ảnh hưởng bởi chế độ bảo trì nếu bạn không đặt nó sang True.

Cách bỏ qua một cửa sổ xem dựa trên chức năng cụ thể ở chế độ bảo trì Django

Gói django-maintenence-mode cung cấp một decorator để ngăn cửa sổ xếp hay trang nào đó, chẳng hạn như About - chuyển sang chế độ bảo trì. Để làm việc này, đầu tiên nhập decorator vào mô đun views.py.

from maintenance_mode.decorators import force_maintenance_mode_off

Sau khi nhập decorator, thêm nó vào trình xem như sau:

@force_maintenance_mode_off
def view_name(request):
    # thực hiện logic cửa sổ xem
    # không bao giờ quay lại phản hồi 503 response

Sau khi triển khai decorator phù hợp, URL của cửa sổ xem cụ thể sẽ cho phép người dùng truy cập nó.

Cách bỏ qua một trình xem class trong chế độ bảo trì Django

Bỏ qua trình xem dựa trên class tương tự như bỏ qua một trình xem dựa trên chức năng. Tuy nhiên, phương pháp tốt nhất ở đây là làm nó trong file urls.py.

Đầu tiên, bạn cần nhập decoratorforce_maintenance_mode_off trong file urls.py của ứng dụng. Sau đó, bạn cần bao gồm nó trong đường dẫn URL. Ví dụ:

from maintenance_mode.decorators import force_maintenance_mode_off
from .views import YourView

urlpatterns = [
# không bao giờ quay lại phản hồi 503 
path('', force_maintenance_mode_off(YourView.as_view()), name='my_view'),
]

Đảm bảo bạn cũng nhập những dữ liệu cần thiết như path và trình xem dựa trên class.

Cách bật chế độ bảo trì cho trình xem dựa trên hàm cụ thể

1. Để bật chế độ bảo trì cho một cửa sổ xem đơn lẻ, đầu tiên tắt chế độ bảo trì trong file settings.py như sau:

MAINTENANCE_MODE = False

2. Tiếp theo, trong views.py, bạn nên nhập decorator force_maintenance_mode_on và thêm nó vào cửa sổ xem:

from maintenance_mode.decorators import force_maintenance_mode_on

@force_maintenance_mode_on
def view_name(request):
    # Perform view logic
    # Always return 503 response

Cách bật chế độ bảo trì cho trình xem dựa trên class cụ thể

Đầu tiên, bạn cần tắt chế độ bảo trì trong file settings.py:

MAINTENANCE_MODE = False

Tiếp theo, trong urls.py, bạn nên nhập decorator và thêm nó vào đường dẫn URL được yêu cầu:

from maintenance_mode.decorators import force_maintenance_mode_on
from .views import YourView

urlpatterns = [
    # Always return 503 response
    path('', force_maintenance_mode_on(YourView.as_view()), name='my_view'),
]

Cách dùng tên mẫu khác nhau cho chế độ bảo trì Django

Mặc định, gói django-maintenance-mode tìm mẫu templates/503.html. Bạn có thể quyết định ghi đè nó trong file settings.py.

Giả sử bạn có một thư mục riêng để xử lý lỗi trong app, bạn sẽ muốn bao gồm mẫu 503.html trong thư mục này. Do đó, mẫu của bạn sẽ ở templates/errors/503.html.

Cài đặt mặc định cho cấu hình này là:

MAINTENANCE_MODE_TEMPLATE = "503.html"

Để ghi đè nó, bạn nên thêm một đường dẫn khác trỏ tới trang lỗi. Ví dụ:

MAINTENANCE_MODE_TEMPLATE = "errors/503.html"

Bạn cũng có thể thay đổi tên file nếu muốn, và mọi thứ sẽ ổn nếu bạn thêm những cấu hình cần thiết.

Nâng cấp chế độ bảo trì trong ứng dụng có thể khiến mọi thứ dễ dàng hơn cho bạn và người dùng. Bằng cách tạm thời vô hiệu hóa truy cập tới tất cả hoặc một phần của app trong khi update hoặc bảo trì, bạn có thể giảm thiểu gián đoạn và lỗi phát sinh từ các tương tác đồng thời của người dùng.

Thứ Ba, 18/07/2023 11:59
51 👨 202
0 Bình luận
Sắp xếp theo