1.1. Chi tiết cấu trúc thư mục dự án
Cấu trúc chi tiết thư mục dự án CRM được trình bày trong Hình 63. Trong đó, vùng màu vàng là cấu trúc tổng quan của hệ thống. Tiếp theo là vùng màu đỏ nơi các mục được bố trí với các tính năng và lưu trữ như: static, modules.
Thêm vào đó, mục màu tím là nơi lưu trữ các mã code xử lý và bố cục của từng tính năng trong hệ thống như: quản lý khách hàng, quản lý dự án, quản lý sản phẩm, quản lý danh mục sản phẩm, quản lý thương hiệu sản phẩm, quản lý nhiệm vụ, quản lý công việc.
Hình 71: Phụ lục - Cấu trúc thư mục dự án
STT Tên thư mục Diễn giải
1 db Dữ liệu lưu trữ.
2 template Thư mục chứa các thiết kế giao diện(*.html).
3 static Thư mục chứa hình ảnh, file CSS, Bootstrap, Js.
4 venv Thư mục chứa môi trường, các thư viện của chương trình.
5 migration Thư mục chứa các file chuyển đổi dữ liệu.
6 src Thư mục chứa các cấu hình và tính năng của hệ thống.
7 modules Thư mục chứa các file code tính năng của hệt thống.
8 config Thư mục chứa các file môi trường tùy chỉnh của hệ thống.
1.2. Blueprint
Blueprint trong Flask được áp dụng vào cấu trúc của hệ thống CRM là một cấu trúc luận lý đại diện cho một phần của ứng dụng. Blueprint trong hệ thống CRM bao gồm các thành phần như là định tuyến (route), hàm hiển thị, form, template và các file tĩnh và các yếu tố cần thiết liên quan đến một chức năng nhất định trong hệ thống. Được trình bày trong Hình 63 (mục màu tím).
Sau đây là sơ đồ chi tiết của blueprint xác thực chức năng khách hàng (client) trong Hệ thống quản lý quan hệ khách hàng (CRM):
Modules/
|_______ Client/ thư mục cho blueprint | |_____ Forms/
Đề tài đồ án tốt nghiệp 2018 – 2021 Trường Đại học Bà Rịa – Vũng Tàu
SINH VIÊN THỰC HIỆN: BÙI VĂN HUÂN 63
| | |_______________ __init__.py khởi tạo blueprint | | |_______________ Client_form.py form thông tin khách hàng | |_____ Templates/ blueprint templates | | |_______________ Add-client.html
| | |_______________ Client.html | | |_______________ Client-details.html
| |_____ __init__.py nơi đăng ký blueprint | |_____ Client_controller.py định tuyến chức năng client | |_____ Client_models.py tạo các class để quản lý ở
Client_controller.py |__init__.py nơi đăng ký blueprint
Định nghĩa các định tuyến cho blueprint trong hệ thống CRM, sử dụng decorator @client_module.route thay vì @app.route. Bên cạnh đó, cần phải cập nhật các lời gọi hàm url_for() để tạo ra các URL.
Đối với các hàm hiển thị được định nghĩa trực tiếp từ ứng dụng, tham số đầu tiên sẽ là tên hàm hiển thị. Nhưng đối với các định tuyến được định nghĩa bên trong blueprint được sử dụng trong CRM, tham số này bao gồm cả tên của blueprint và tên hàm hiển thị và được ngăn cách bằng dấu chấm.
Cụ thể khi lập trình phải thay thế tất cả các lời gọi hàm url_for('client') với url_for('client.add') và tương tự như vậy cho các trường hợp khác. Đăng ký blueprint khách hàng (client) với ứng dụng như sau:
Khi gọi hàm register_blueprint() trong hệ thống với chức năng client, sử dụng một tham số mới là url_prefix. Tham số này là tùy chọn, nhưng Flask cho phép kết nối một blueprint vào một tiền tố URL, nhờ đó mọi URL trong blueprint client sẽ được bắt đầu với tiền tố này. Mục đích áp dụng để phân biệt rõ các URL giữa các blueprint khác nhau trong hệ thống CRM.
Trong trường hợp này, mọi URL từ blueprint khách hàng sẽ được bắt đầu với tiền tố /client. Ví dụ như URL cho trang tạo thông tin khách hàng sẽ là http://localhost:5000/client/add. Bởi vì hệ thống sử dụng hàm url_for() để tạo ra các URL, tất cả các URL trong blueprint này sẽ được kết hợp với tiền tố này một cách tự động.