CyStack logo
  • Sản phẩm & Dịch vụ
  • Giải pháp
  • Bảng giá
  • Công ty
  • Tài liệu
Vi

vi

Trang chủHướng dẫnCách tạo ứng dụng Django và kết nối đến MySQL

Cách tạo ứng dụng Django và kết nối đến MySQL

CyStack blog 9 phút để đọc
CyStack blog30/08/2025
Locker Avatar

Bao Tran

Web Developer

Locker logo social
Reading Time: 9 minutes

Django là một framework web miễn phí mã nguồn mở được viết bằng Python. Các điểm mạnh của framework này là khả năng mở rộng, tái sử dụng và tốc độ phát triển ứng dụng web nhanh chóng.

tạo ứng dụng Django và kết nối đến MySQL

Trong hướng dẫn này, ta sẽ học cách thiết lập nền tảng ban đầu cho một trang blog có kết nối tới database MySQL. Quá trình này bao gồm việc tạo cấu trúc sườn cho ứng dụng blog, tạo database MySQL và kết nối ứng dụng web với database đó.

Django sẽ cung cấp cho bạn một môi trường phát triển để làm việc với ứng dụng blog của mình, nhưng sau đó bạn sẽ cần thực hiện thêm nhiều bước nữa trước khi đưa blog của mình lên mạng.

Cách tạo ứng dụng Django và kết nối đến MySQL

Yêu cầu tiên quyết

Để làm theo hướng dẫn này, bạn sẽ cần:

  • Một server Ubuntu phiên bản tối thiểu 22.04 với một user không phải root và một firewall.
  • Cài đặt MySQL để làm database.
  • Thiết lập môi trường cho Python.

Bước 1: Tạo database

Django hỗ trợ nhiều hệ quản trị cơ sở dữ liệu phổ biến, nhưng hướng dẫn này tập trung vào việc kết nối Django với MySQL. Để làm được điều này, bạn cần tạo một database trên bản cài đặt MySQL của mình cũng như một user profile (cấu hình người dùng) cho MySQL mà Django có thể sử dụng để kết nối với database.

Đầu tiên, hãy kết nối với database MySQL của bạn với tư cách là user root của MySQL bằng lệnh sau:

sudo mysql

Bạn sẽ biết mình đang ở trong server MySQL khi dấu nhắc lệnh trở thành như sau:

mysql>

Kiểm tra các database hiện tại bằng lệnh sau:

SHOW DATABASES;

Giả sử rằng bạn chưa tạo bất kỳ database nào, output sẽ tương tự như sau:

+--------------------+
| Database       	|
+--------------------+
| information_schema |
| mysql         	|
| performance_schema |
| sys            	|
+--------------------+
4 rows in set (0.00 sec)

Mặc định, bạn sẽ có 4 database đã được tạo sẵn: information_schema, MySQL, performance_schemasys. Bạn không cần phải động đến chúng, vì chúng chứa thông tin quan trọng cho chính server MySQL.

Thay vào đó, hãy tạo một database để chứa dữ liệu cho blog của bạn với lệnh sau (có thể sử dụng một tên khác cho database của bạn):

CREATE DATABASE blog_data;

Nếu tạo database thành công, bạn sẽ thấy output như sau:

Query OK, 1 row affected (0.00 sec)

Xác minh rằng database hiện đã được liệt kê là một trong những database có sẵn:

SHOW DATABASES;

Database blog_data bây giờ sẽ được liệt kê trong số các database có trong output:

+--------------------+
| Database       	|
+--------------------+
| information_schema |
| blog_data      	|
| mysql             	|
| performance_schema |
| sys            	|
+--------------------+
5 rows in set (0.00 sec)

Tiếp theo, hãy tạo một tài khoản user MySQL riêng để Django sử dụng cho database mới. Việc tạo các database và tài khoản riêng biệt giúp ích cho việc quản lý và bảo mật.

Chúng ta sẽ sử dụng tên djangouser trong hướng dẫn này. Ta có thể sử dụng bất kỳ tên nào bạn muốn, nhưng nên chọn một cái tên có tính gợi nhớ. Bạn sẽ cần tạo tài khoản này, đặt mật khẩu cho nó và cấp quyền truy cập vào database bạn đã tạo.

Đầu tiên, tạo user và đặt mật khẩu bằng lệnh sau. Hãy nhớ chọn một mật khẩu mạnh cho database của bạn bằng cách thay thế password trong ví dụ này:

CREATE USER 'djangouser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Thông báo cho database biết rằng djangouser sẽ có toàn quyền truy cập vào database bạn đã thiết lập:

GRANT ALL ON blog_data.* TO 'djangouser'@'localhost';

Bây giờ bạn đã có một database và một tài khoản user, tất cả đều được tạo riêng cho Django. Flush (cập nhật thông tin) các quyền để bản cài đặt MySQL của bạn ghi nhận những thay đổi vừa thực hiện:

FLUSH PRIVILEGES;

Sau khi hoàn tất, bạn có thể thoát khỏi server MySQL bằng cách gõ exit hoặc nhấn CTRL+D.

Bước 2: Tạo file cấu hình cho MySQL

Thay vì khai báo chi tiết kết nối MySQL trong file cấu hình Django, bạn có thể lưu chúng trong một option file (file cấu hình của MySQL). Nhiều chương trình MySQL có thể đọc các file này để lấy thông tin như tùy chọn khởi động hoặc chi tiết kết nối. Điều này rất tiện lợi vì bạn chỉ cần lưu trữ thông tin đăng nhập database ở một nơi duy nhất.

Mở file cấu hình /etc/mysql/my.cnf để cập nhật thông tin đăng nhập MySQL. Ở đây chúng ta sẽ sử dụng nano:

sudo nano /etc/mysql/my.cnf

Thêm các dòng sau và điền thông tin liên quan của bạn:

[client]
database = blog_data
user = djangouser
password = your_actual_password
default-character-set = utf8

Ở đây ta dùng utf8 làm encoding (chuẩn mã hóa ký tự) mặc định. Đây là một cách phổ biến để mã hóa dữ liệu unicode trong MySQL.

Khi bạn chắc rằng thông tin trong file là chính xác, hãy lưu và đóng nó lại. Nếu sử dụng nano, nhấn CTRL+X, Y để lưu file và sau đó ENTER để đóng nó.

Sau khi file đã được chỉnh sửa, hãy khởi động lại MySQL để áp dụng các thay đổi :

sudo systemctl daemon-reload
sudo systemctl restart mysql

Việc khởi động lại MySQL có thể mất vài giây nên hãy kiên nhẫn một chút.

Bước 3: Tạo cấu trúc sườn ban đầu cho dự án Django

Trong bước này, bạn sẽ đặt nền tảng cho ứng dụng Django bằng cách tạo ra cấu trúc sườn của dự án bằng lệnh django-admin.

Đến thư mục nơi bạn muốn phát triển ứng dụng blog. Ở đó, tạo một thư mục cụ thể để xây dựng ứng dụng. Đặt tên nó cho có ý nghĩa với ứng dụng bạn đang xây dựng. Ví dụ, chúng ta sẽ đặt tên là my_blog_app:

mkdir my_blog_app

Bây giờ, đến thư mục vừa tạo:

cd my_blog_app

Tiếp theo, chuyển vào môi trường lập trình bạn muốn sử dụng để làm việc trong Django. Bạn có thể sử dụng một môi trường đã có hoặc tạo một môi trường mới.

Lệnh sau tạo một môi trường mới có tên là env, nhưng bạn nên sử dụng một cái tên dễ nhớ với bạn:

python3 -m venv env

Sau khi nó đã được tạo, hãy kích hoạt môi trường này:

. env/bin/activate

Cài đặt Django vào môi trường này nếu bạn chưa làm vậy:

pip install django

Khi đang ở trong thư mục my_blog_app, khởi tạo một dự án bằng cách chạy lệnh sau:

django-admin startproject blog

Xác minh rằng nó đã hoạt động bằng cách vào thư mục blog:

cd blog

Sau đó chạy ls để xác minh rằng các file và thư mục cần thiết đã được tạo trong thư mục dự án:

ls

Output lệnh trên sẽ liệt kê thư mục blog và file manage.py:

blog manage.py

Bước 4: Cài connector cho database MySQL

Để sử dụng MySQL với dự án của mình, bạn cần một thư viện kết nối với database cho Python 3 tương thích với Django. Ở bước này ta sẽ cài đặt một trình kết nối (connector) như vậy tên là mysqlclient, vốn bản fork (bản được sao chép và chỉnh sửa từ dự án chính) từ MySQLdb.

Đầu tiên, cài đặt các header và thư viện phát triển MySQL cần thiết:

sudo apt install libmysqlclient-dev default-libmysqlclient-dev

Tiếp theo, sử dụng pip để cài đặt gói wheel. Đây là một định dạng đóng gói được sử dụng trong Python để cài đặt các module từ PyPI (Python Package Index, kho thư viện Python phổ biến nhất). Việc cài đặt các chương trình Python từ các gói wheel thường nhanh hơn và tiết kiệm tài nguyên hơn so với việc build các gói từ mã nguồn của chúng.

Để cài đặt và làm việc với các chương trình được đóng gói dưới dạng wheel, trước tiên bạn cần đảm bảo gói wheel đã được cài đặt:

pip install wheel

Sau đó tiến hành cài đặt mysqlclient:

pip install mysqlclient

Output sẽ trông giống như sau, xác nhận rằng client đã được cài đặt đúng cách:

Successfully installed mysqlclient-2.1.1

Bước 5: Chỉnh sửa cấu hình

Sau khi chạy django-admin, bạn đã tạo một file cấu hình cho Django có tên là settings.py. Bây giờ ta cần thay đổi một vài cài đặt mặc định trong file này để mọi thứ hoạt động một cách chính xác.

Dùng lệnh sau để mở và chỉnh sửa file này:

nano ~/my_blog_app/blog/blog/settings.py

Để ứng dụng có thời gian đúng theo nơi bạn sinh sống, hãy chỉnh sửa file trên để nó sử dụng múi giờ hiện tại của bạn. Bạn có thể tham khảo danh sách các múi giờ ở Wikipedia.

Trong file cấu hình, chuyển xuống đến trường TIME_ZONE ở gần cuối file:

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

Sửa đổi dòng TIME_ZONE thành múi giờ hiện tại của bạn. Trong ví dụ này, ta sẽ sử dụng giờ America/New_York.

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'America/New_York'

USE_I18N = True

Chưa đóng file này vội vì bạn cũng cần thêm đường dẫn cho các file tĩnh (static) của mình. Các file được phục vụ từ ứng dụng web Django của bạn được gọi là các file tĩnh (static files). Đây có thể là bất kỳ file nào cần thiết để render một trang web hoàn chỉnh, bao gồm JavaScript, CSS và hình ảnh.

Đi đến cuối file settings.py và thêm STATIC_ROOT:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

Sau khi đã thêm múi giờ và đường dẫn cho các file tĩnh, hãy thêm IP của bạn vào danh sách các host được phép kết nối.

Chuyển đến dòng có ghi ALLOWED_HOSTS, thường nó ở gần đầu file settings.py. Thêm địa chỉ IP của server của bạn, nằm giữa các dấu ngoặc đơn, vào giữa các dấu ngoặc vuông:

ALLOWED_HOSTS = ['your_server_IP_address']

Tiếp theo, thêm module OS của Python để cung cấp các chức năng khác nhau cho thư mục. Nếu không có module này, bạn sẽ gặp lỗi khi thiết lập người dùng quản trị để bắt đầu sử dụng giao diện admin của Django.

Để làm điều này, bạn cần import module os trên hệ điều hành tương ứng của bạn. Thêm dòng import os phía trên dòng from pathlib import Path:

import os
from pathlib import Path

Đoạn cấu hình cuối cùng cần thêm là thông tin để kết nối ứng dụng blog Django của bạn với MySQL. Để làm điều này, hãy tìm dictionary DATABASES trong file. Theo mặc định, nó sẽ trông như sau:

DATABASES = {
	'default': {
    	'ENGINE': 'django.db.backends.sqlite3',
    	'NAME': BASE_DIR / 'db.sqlite3',
	}
}

Thay thế các tùy chọn ENGINENAME của dictionary DATABASES bằng các dòng sau:

DATABASES = {
	'default': {
    	'ENGINE': 'django.db.backends.mysql',
    	'OPTIONS': {
        	'read_default_file': '/etc/mysql/my.cnf',
    	},
	}
}

Dòng ‘ENGINE’: 'django.db.backends.mysql' bảo Django sử dụng phần tương tác MySQL tích hợp có sẵn của nó. Tùy chọn read_default_file trỏ đến /etc/mysql/my.cnf, là file cấu hình MySQL bạn đã chỉnh sửa trước đó. Điều này cho Django biết nơi nó có thể tìm thấy các chi tiết kết nối cần thiết để kết nối với database MySQL bạn đã tạo ở Bước 1.

Lưu ý rằng Django đọc các cài đặt kết nối database theo thứ tự sau:

  1. OPTIONS
  2. NAME, USER, PASSWORD, HOST, PORT
  3. Các file cấu hình MySQL

Bằng cách trỏ Django đến file cấu hình MySQL trong cài đặt OPTIONS như trên, file đó sẽ được ưu tiên sử dụng hơn bất kỳ cài đặt NAME nào. Nếu không, các cài đặt NAME sẽ ghi đè lên file cấu hình nằm ngoài OPTIONS.

Bây giờ bạn đã có thể lưu và đóng file settings.py.

Tiếp theo, kiểm tra các thay đổi cấu hình vơi lệnh sau:

python manage.py makemigrations

Sau đó, chạy migrate để áp dụng các thay đổi trong cấu hình:

python manage.py migrate

Bây giờ các thay đổi mới đã được áp dụng, bạn có thể tạo một người dùng quản trị để sử dụng cho giao diện admin của Django với lệnh createsuperuser:

python manage.py createsuperuser

Nhớ nhập tên người dùng, địa chỉ email và mật khẩu cho người dùng khi được yêu cầu.

Sau khi bạn hoàn thành bước này, bạn có thể chuyển sang điều chỉnh cài đặt firewall để chuẩn bị kiểm thử.

Bước 6: Điều chỉnh cài đặt firewall

Nhớ điều chỉnh cài đặt firewall ufw trước khi kiểm thử ứng dụng web Django của bạn. Bắt đầu bằng việc cho phép các truy cập vào cổng 8000:

sudo ufw allow 8000

Kiểm tra trạng thái để đảm bảo các cài đặt quyền này đã được cập nhật thành công:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
8000                       ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
8000 (v6)                  ALLOW       Anywhere (v6)

Bước 7: Kiểm tra kết nối MySQL với ứng dụng

Đến đây ta đã có thể kiểm tra liệu các cấu hình trong Django có thể phát hiện server MySQL của bạn một cách chính xác. Làm điều này đơn giản bằng cách khởi chạy server. Nếu có lỗi, điều đó có nghĩa là kết nối không hoạt động bình thường. Ngược lại, kết nối đã hợp lệ.

Đầu tiên, chuyển đến thư mục sau:

cd ~/my_blog_app/blog/

Sau đó, chạy lệnh sau:

python manage.py runserver your-server-ip:8000

Bạn sẽ nhận được một output tương tự như sau:

Performing system checks...

System check identified no issues (0 silenced).
July 19, 2022 - 13:26:08
Django version 4.0.6, using settings 'blog.settings'
Starting development server at <http://your-server-ip:8000/>
Quit the server with CONTROL-C.

Lưu ý: Bạn sẽ nhận thấy rằng có các thay đổi chưa được áp dụng trong output. Đừng lo lắng vì điều này không ảnh hưởng đến việc thiết lập ban đầu của ứng dụng.

Làm theo hướng dẫn từ output và truy cập liên kết được đề xuất http://your-server-ip:8000 để xác minh ứng dụng web của bạn có đang hoạt động bình thường.

Ví dụ tạo ứng dụng Django và kết nối đến MySQL

Nếu trình duyệt của bạn hiện tương tự như ảnh trên, ứng dụng Django của bạn đang hoạt động như mong đợi.

Khi bạn đã hoàn tất việc kiểm thử ứng dụng của mình, nhấn CTRL+C để dừng lệnh runserver. Thao tác này sẽ đưa bạn trở lại môi trường lập trình của mình.

Khi đã sẵn sàng rời khỏi môi trường Python, bạn có thể chạy lệnh deactivate:

deactivate

Thao tác này sẽ đưa bạn trở lại dấu nhắc lệnh bình thường của terminal.

Tổng kết

Trong hướng dẫn này, bạn đã học cách cài đặt, cấu hình và kết nối MySQL với backend của Django, bao gồm việc thay đổi một số thông tin quan trọng trong file settings.py. Bạn cũng đã điều chỉnh cài đặt firewall để đảm bảo việc kiểm thử diễn ra suôn sẻ.

Sau khi việc cài đặt và cấu hình cơ bản này đã hoàn tất, bạn có thể bắt đầu phát triển các model dữ liệu phù hợp cũng như xây dựng các tính năng hoàn chỉnh cho dự án của mình.

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.

Đăng ký nhận Newsletter

Nhận các nội dung hữu ích mới nhất