Đây là chuỗi các bài viết hướng dẫn cách lập trình Web Service API (REST) sử dụng Django REST Framework (gọi tắt là DRF).
Trong bài đầu tiên này, bạn sẽ học cách thiết lập khung cơ bản cho dự án.
Trước khi bắt đầu, mình muốn giải thích qua về mục đích của Web Service API (tạm gọi ngắn gọn là “Backend API“). Trong nhiều sản phẩm web và mobile app hiện đại, giải pháp của sản phẩm được chia ra làm 2 thành phần: Backend API và Frontend UI (giao diện người sử dụng).
- Backend API sẽ chịu trách nhiệm truy vấn và ghi chép cơ sở dữ liệu (ví dụ như MySQL, MSSQL, SQLite,…).
- Backend API cũng bao gồm các thuật toán và logic nghiệp vụ để xử lý dữ liệu đúng theo yêu cầu của người dùng trước khi thêm vào hoặc sau khi lấy ra từ các bảng dữ liệu.
- Kết quả của xử lý này sẽ được đẩy cho giao diện để người sử dụng ở dưới dạng phổ biến là JSON hay XML data. Frontend UI sẽ format lại thông tin này và hiển thị một cách thân thiện cho người xem, sử dụng chủ yếu là HTML, CSS và Javascript.
DRF cung cấp cho chúng ta các lập trình các Backend API một cách tiện lợi. Bạn có thể chọn ReactJS, AngularJS, VueJS hay các framework frontend UI khác để kết nối với Backend API. Nhưng đây sẽ không nằm trong phạm vi của bài học này.
Thiết lập khung cơ bản của dự án
Python
Bạn cần cài đặt Python phiên bản tối thiểu 3.6. Xem cách cài đặt tại trang web của Python. Nếu bạn dùng Ubuntu hoặc hệ điều hành Linux tương tự, bạn có thể chạy lệnh sau trên Terminal để cài Python
sudo apt install python3.8
Sau khi cài đặt xong python, tùy theo hệ điều hành của bạn mà câu lệnh python có thể là python, python3.x (tùy phiên bản bạn cài mà nó sẽ là 3.6, 3.7 hay 3.8…), hoặc py.
Trong bài học nay, chúng ta sẽ tạm dùng lệnh python3.8
Django
Sau khi đã có python3 được cài đặt, dùng câu lệnh sau trên Terminal để cài django:
python3.8 -m pip install django
Cú pháp có thể khác biệt trên Windows. Để xem chi tiết hướng dẫn, bạn hãy truy cập trang hướng dẫn của Django tại đây.
Tạo Dự Án
Trong bài học này, chúng ta sẽ lấy ví dụ quản lý danh sách các khách hàng và địa điểm văn phòng của mỗi khách hàng. Tạm gọi app này là “mycustomer”.
Mỗi khách có thể có hơn 1 địa điểm văn phòng. Cấu trúc cơ sở dữ liệu sẽ như sau:
- Customer: id (primary key), customer_name (varchar), website (varchar)
- Customer Address: id (primary key), customer_id (khóa phụ), street_address (varchar), country (varchar)
Chúng ta sẽ cài dùng MySQL làm cơ sở dữ liệu (CSDL) cho dự án. CSDL cho dự án sẽ mang tên mycustomer. Học cách cài đặt MySQL và tạo cơ sở dữ liệu cho dự án tại đây.
Bước đầu tiên là chạy câu lệnh dưới đây để tạo thư mục cho dự án. Chúng ta tạm gọi dự án là mydrf:
django-admin startproject mydrf
Thư mục mydrf sẽ được khởi tạo với cấu trúc như dưới đây:
mydrf/
manage.py
mydrf/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
Tiếp đó, bạn hãy chuyển vị trí vào thư mục mydrf vừa được tạo và tạo app cho code Backend API của dự án này. Chúng ta gọi app là mycustomer:
cd mydrf
python3.8 manage.py startapp mycustomer
Kiểm thử thiết lập dự án này bằng cách chạy lệnh sau đây trong thư mục mydrf:
python3.8 manage.py runserver
Nếu thành công, bạn sẽ thấy kết quả trả về tương tự như dưới đây:
Performing system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
July 04, 2022 - 15:50:53
Django version 4.0, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Ấn Ctrl + C để tắt app, hoặc vào trình duyệt và truy nhập tới địa chỉ http://127.0.0.1:8000/ để thấy trang mặc định của django.
Bước cuối cùng là cài đặt các thư viện cần thiết cho django rest framework và cơ sở dữ liệu mysql.
Django Rest Framework
Bước cuối cùng, để sử dụng được DRF, chúng ta cần cài thêm các module sau:
python3.8 -m pip install djangorestframework markdown django-filter mysqlclient
Cập nhật settings của dự án sau khi cài đặt thành công. Mở file mydrf/mydrf/settings.py và thêm mới như sau:
INSTALLED_APPS = [
...
'rest_framework', # <== Dòng cần thêm mới
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mycustomer', # tên csdl mà bạn đã tạo
'USER': 'root', # tên đăng nhập vào csdl
'PASSWORD': 'root', # mật khẩu csdl
'HOST': '127.0.0.1', # server cài đăt csdl, thường là 127.0.0.1 hay localhost
'PORT': '3306', # đâu là cổng mặc định
}
}
Vậy là bạn đã hoàn tất việc thiết lập khung dự án. Chạy lại lệnh python3.8 manage.py runserver để đảm bảo thiết lập đã thành công. Hãy chạy lần dưới đây 1 lần nữa để đảm bảo thiết lập của bạn không có lỗi gì:
python3.8 manage.py runserver
Trong bài tiếp theo, bạn sẽ bắt đầu học cách code Backend API: Django REST 2: Tạo Web Service API Đầu Tiên với Python Django

Pingback: Django REST 2: Tạo Web Service API Đầu Tiên với Python Django - Bệ Phóng Việt
Pingback: Django REST 3: Tạo Web Service API cho Module Khách Hàng (POST, GET, DELETE, PATCH) - Bệ Phóng Việt