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

Giới thiệu

Django là một khuôn khổ web mã nguồn mở và miễn phí được viết bằng Python. Công cụ này cho phép khả năng mở rộng, khả năng tái sử dụng và phát triển nhanh chóng.

Trong này, bạn sẽ học cách thiết lập nền tảng ban đầu cho một trang web blog có kết nối với cơ sở dữ liệu MySQL. Điều này sẽ liên quan đến việc tạo cấu trúc khung của ứng dụng web blog bằng cách sử dụng django-admin, tạo cơ sở dữ liệu MySQL và kết nối ứng dụng web với cơ sở dữ liệu.

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

Điều kiện tiên quyết

Để hoàn thành hướng dẫn này, bạn sẽ cần:

Khi mọi thứ đã được cài đặt và thiết lập, bạn có thể chuyển sang bước đầu tiên.

Bước 1 – Tạo cơ sở dữ liệu

Django hỗ trợ một số 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 cơ sở dữ liệu MySQL. Để thực hiện việc này, bạn cần tạo cơ sở dữ liệu trên phiên bản MySQL của mình cũng như hồ sơ người dùng MySQL mà Django có thể sử dụng để kết nối với cơ sở dữ liệu.

Để thiết lập điều này, hãy kết nối với cơ sở dữ liệu MySQL của bạn với tư cách là người dùng MySQL gốc bằng lệnh sau:

You'll know you're in the MySQL server when the prompt changes:

Inspect the current databases with the following command:

You'll receive output similar to the following, assuming that you haven't created any databases yet:

Output

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

Theo mặc định, bạn sẽ có 4 cơ sở dữ liệu đã được tạo: information_schema, MySQL, performance_schemasys. Bạn sẽ không cần phải chạm vào những thứ này, vì chúng chứa thông tin quan trọng đối với chính máy chủ MySQL.

Thay vào đó, hãy tạo cơ sở dữ liệu ban đầu sẽ chứa dữ liệu cho blog của bạn.

Để tạo cơ sở dữ liệu trong MySQL, hãy chạy lệnh sau, sử dụng tên có ý nghĩa cho cơ sở dữ liệu của bạn:

  • CREATE DATABASE blog_data;

Sau khi tạo thành công cơ sở dữ liệu, bạn sẽ nhận được kết quả sau:

Output

Query OK, 1 row affected (0.00 sec)

Ghi chú: Có khả năng bạn gặp lỗi sau:

Output

ERROR 1007 (HY000): Can't create database blog_data; database exists

Điều này chỉ ra rằng cơ sở dữ liệu có tên blog_data đã tồn tại.

Và nếu bạn nhận được lỗi MySQL sau, điều đó có nghĩa là có lỗi cú pháp MySQL. Xác minh rằng bạn đã nhập lệnh chính xác như được hiển thị trong hướng dẫn này:

Output

ERROR 1064 (42000): You have an error in your SQL syntax;

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

The blog_data cơ sở dữ liệu bây giờ sẽ được liệt kê trong số các cơ sở dữ liệu có trong đầu ra:

Output

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

Tiếp theo, tạo một tài khoản người dùng MySQL riêng biệt mà Django sẽ sử dụng để vận hành cơ sở dữ liệu mới. Tạo cơ sở dữ liệu và tài khoản cụ thể có thể hỗ trợ bạn từ quan điểm quản lý và bảo mật. Chúng tôi sẽ sử dụng tên djangouser trong hướng dẫn này, nhưng hãy thoải mái sử dụng bất kỳ tên nào phù hợp với bạn.

Bạn sẽ tạo tài khoản này, đặt mật khẩu và cấp quyền truy cập vào cơ sở dữ liệu bạn đã tạo. Đầu tiên, tạo người dùng và đặt mật khẩu của họ bằng cách gõ lệnh sau. Hãy nhớ chọn một mật khẩu mạnh cho cơ sở dữ liệu của bạn để thay thế password trong ví dụ này:

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

Cho cơ sở dữ liệu biết rằng djangouser nên có toàn quyền truy cập vào cơ sở dữ liệu bạn đã thiết lập:

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

Bây giờ bạn có một cơ sở dữ liệu và tài khoản người dùng, mỗi tài khoản được tạo riêng cho Django. Xóa các đặc quyền để phiên bản hiện tại của MySQL biết về những thay đổi gần đây mà bạn đã thực hiện:

With that complete, you can exit the MySQL server by typing EXIT; hoặc nhấn CTRL + D.

Bước 2 - Tạo tệp tùy chọn MySQL

Thay vì chỉ định chi tiết kết nối MySQL của bạn trong tệp cấu hình Django, bạn có thể lưu trữ chúng trong một tệp tùy chọn. Nhiều chương trình MySQL có thể đọc các tệp tùy chọn - còn được gọi là tệp cấu hình - để biết thông tin như tùy chọn khởi động hoặc chi tiết kết nối. Điều này có thể thuận tiện, vì bạn chỉ phải lưu trữ thông tin đăng nhập cơ sở dữ liệu của mình ở một nơi.

Xem tiếp:   3 Cách tạm dừng mã hóa BitLocker để thực hiện các thay đổi hệ thống trên Windows 10

Mở my.cnf tệp cấu hình với trình soạn thảo văn bản ưa thích của bạn để cập nhật thông tin đăng nhập MySQL của bạn. Ở đây chúng tôi sẽ sử dụng nano:

  • sudo nano /etc/mysql/my.cnf

Thêm các dòng sau và bao gồm thông tin liên quan của bạn:

/etc/mysql/my.cnf

…

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

Bạn sẽ nhận thấy rằng utf8 được đặt làm mã hóa mặc định, đây là cách phổ biến để mã hóa dữ liệu unicode trong MySQL. Khi bạn chắc chắn rằng thông tin chi tiết của mình là chính xác, hãy lưu và đóng tệp. Nếu bạn đã sử dụng nano để chỉnh sửa tệp, bạn có thể làm như vậy bằng cách nhấn CTRL + X và sau đó Y để xác nhận các thay đổi.

Khi tệp đã được chỉnh sửa, bạn cần khởi động lại MySQL để các thay đổi có hiệu lực:

  • sudo systemctl daemon-reload
  • sudo systemctl restart mysql

Lưu ý rằng việc khởi động lại MySQL mất vài giây, vì vậy hãy kiên nhẫn.

Bước 3 - Tạo bộ xương dự án Django ban đầu

Trong bước này, bạn sẽ đặt nền tảng cho ứng dụng của mình bằng cách tạo khung dự án bằng cách sử dụng django-admin chỉ huy.

Điều hướng đến thư mục mà bạn muốn xây dựng ứng dụng blog của mình. Trong thư mục đó, hãy tạo một thư mục cụ thể để xây dựng ứng dụng. Gọi thư mục là một cái gì đó có ý nghĩa đối với ứng dụng bạn đang xây dựng. Ví dụ, chúng tôi sẽ đặt tên cho chúng tôi my_blog_app:

Now, navigate to the newly created directory:

Next, move into the programming environment you would like to use for working in Django. You can use an existing one, or create a new one. We'll call ours env, nhưng bạn nên sử dụng một cái tên có ý nghĩa đối với bạn:

Once it's created you can activate it:

Now install Django into this environment if you have not done so already:

While in the my_blog_app thư mục, 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 điều hướng đến blog/ danh mục:

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

The output will list the blog thư mục và một manage.py tập tin:

Output

blog manage.py

Bây giờ bạn đã tạo một thư mục dự án chứa phần khởi động ban đầu của ứng dụng blog của mình, bạn có thể tiếp tục bước tiếp theo.

Bước 4 - Cài đặt trình kết nối cơ sở dữ liệu MySQL

Để sử dụng MySQL với dự án của bạn, bạn sẽ cần một thư viện trình kết nối cơ sở dữ liệu Python 3 tương thích với Django. Bước này phác thảo cách cài đặt một trình kết nối cơ sở dữ liệu như vậy, mysqlclient, là một phiên bản phân nhánh của MySQLdb.

Đầu tiên, hãy cài đặt các thư viện và tiêu đề 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 wheel Bưu kiện. Bánh xe là một định dạng đóng gói được sử dụng trong Python để cài đặt các mô-đun từ Chỉ mục gói Python. Cài đặt các chương trình Python từ các gói bánh xe thường nhanh hơn và tiết kiệm tài nguyên hơn so với việc xây dựng 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 bánh xe, trước tiên bạn cần đảm bảo wheel gói được cài đặt:

Then proceed with installing mysqlclient:

You will receive output similar to the following, verifying that the client was properly installed:

Output

... Successfully installed mysqlclient-2.1.0

Bây giờ bạn đã cài đặt thành công máy khách MySQL bằng PyPi mysqlclient thư viện kết nối.

Xem tiếp:   Cách sử dụng Ansible với Terraform để quản lý cấu hình

Bước 5 - Chỉnh sửa cài đặt

Khi bạn chạy django-admin trước đó, nó đã tạo một tệp cấu hình cho Django có tên settings.py. Bạn cần thay đổi một số cài đặt mặc định trong tệp này để mọi thứ hoạt động bình thường.

Để chỉnh sửa tệp, hãy mở đường dẫn đến tệp bằng trình soạn thảo văn bản mà bạn chọn:

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

Để blog của bạn có thời gian chính xác được liên kết với khu vực của bạn, bạn có thể chỉnh sửa settings.py để nó sử dụng múi giờ hiện tại của bạn. Bạn có thể sử dụng danh sách múi giờ này để tham khảo. Đối với ví dụ của chúng tôi, chúng tôi sẽ sử dụng America/New_York thời gian.

Trong tệp, điều hướng đến TIME_ZONE trường gần phần dưới cùng của tệp:

~ / my_blog_app / blog / blog / settings.py

...
# Internationalization
# https://docs.djangoproject.com/en/2.0/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True
...

Sửa đổi TIME_ZONE để nó được đặt thành múi giờ hiện tại của bạn. Chúng tôi sẽ sử dụng múi giờ cho New York trong ví dụ này:

~ / my_blog_app / blog / blog / settings.py

...
# Internationalization
# https://docs.djangoproject.com/en/2.0/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'America/New_York'

USE_I18N = True
...

Giữ cho tệp mở vì tiếp theo bạn cần thêm đường dẫn cho các tệp tĩnh của mình. Các tệp được phân phát từ ứng dụng web Django của bạn được gọi là tệp tĩnh. Điều này có thể bao gồm bất kỳ tệp nào cần thiết để hiển thị trang web hoàn chỉnh, bao gồm , CSS và hình ảnh.

Đi đến phần cuối của settings.py tập tin và thêm STATIC_ROOT:

~ / my_blog_app / blog / blog / settings.py

...
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.0/howto/static-files/

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

Bây giờ bạn đã thêm múi giờ và đường dẫn cho các tệp tĩnh, hãy thêm IP của bạn vào danh sách các máy chủ được phép. Điều hướng đến dòng của settings.py nộp nơi nó nói ALLOWED_HOSTS, nó sẽ ở phía trên cùng của settings.py tập tin. Thêm địa chỉ IP của máy chủ của bạn, được bao quanh bởi các dấu ngoặc kép, giữa các dấu ngoặc vuông:

~ / my_blog_app / blog / blog / settings.py

...
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ['your_server_IP_address']

# Application definition
...

Tiếp theo, thêm mô-đun Hệ điều hành Python cung cấp các chức năng khác nhau cho các thư mục. Nếu không có mô-đun 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 Django. Để làm điều này, bạn cần nhập os mô-đun sẽ hoạt động trên hệ điều hành tương ứng của bạn. Thêm dòng import os phía trên from pathlib import Path hàng:

~ / my_blog_app / blog / blog / settings.py

...
import os
from pathlib import Path

# Build paths inside the project like this: BASE_DIR / 'subdir'.
...

Cho đến nay bạn đã chỉnh sửa settings.py tệp sao cho múi giờ thích hợp đã được định cấu hình. Bạn cũng đã thêm đường dẫn cho các tệp tĩnh của mình, hãy đặt ip address là một ALLOWED_HOST cho ứng dụng của bạn và đã nhập mô-đun Hệ điều hành Python để giúp thiết lập người dùng quản trị của bạn sau này.

Đoạn mã cuối cùng để thêm vào tệp của bạn là thông tin xác thực kết nối cơ sở dữ liệu để kết nối ứng dụng blog Django của bạn với MySQL. Để kết thúc, hãy tìm DATABASES từ điển trong tệp. Nó sẽ trông giống như sau theo mặc định:

~ / my_blog_app / blog / blog / settings.py

...
# Database
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases

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

Thay thế cái DATABASES từ điển của ENGINENAME tùy chọn với các dòng sau:

~ / my_blog_app / blog / blog / settings.py

...
# Database
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases

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

Các 'ENGINE': 'django.db.backends.mysql' dòng yêu cầu Django sử dụng phần phụ trợ cơ sở dữ liệu MySQL tích hợp sẵn của nó. Các read_default_file tùy chọn trỏ đến /etc/mysql/my.cnf, tệp tùy chọn MySQL mà 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 liên quan để kết nối với cơ sở dữ liệu MySQL mà bạn đã tạo ở Bước 1.

Xem tiếp:   Cách triển khai nhiều môi trường trong dự án Terraform của bạn mà không cần mã trùng lặp

Lưu ý rằng Django đọc cài đặt kết nối cơ sở dữ liệu theo thứ tự sau:

  • OPTIONS
  • NAME, USER, PASSWORD, HOST, PORT
  • Tệp tùy chọn MySQL

Bằng cách trỏ Django đến tệp tùy chọn MySQL của bạn trong OPTIONS như trong ví dụ này, nó sẽ được ưu tiên hơn bất kỳ NAME cài đặt, nếu không sẽ ghi đè lên tệp tùy chọn nếu bạn trỏ đến nó bên ngoài OPTIONS thiết lập.

Tại thời điểm này, bạn có thể lưu và đóng tệp.

Tiếp theo, kiểm tra các thay đổi di chuyển bằng cách chạy như sau:

  • python manage.py makemigrations

Sau đó chạy migrate để đảm bảo các thay đổi diễn ra:

Now that your changes have been migrated, you can create an administrative user to use for the Django admin interface. Do this with the createsuperuser chỉ huy:

  • python manage.py createsuperuser

Bạn sẽ được nhắc nhập tên người dùng, địa chỉ email và mật khẩu cho người dùng của bạn.

Sau khi hoàn thành thông tin này, bạn có thể chuyển sang điều chỉnh cài đặt tường lửa của mình để cho phép thử nghiệm.

Bước 6 - Điều chỉnh cài đặt tường lửa

Trước khi thử nghiệm ứng dụng web Django, bạn phải đảm bảo rằng cài đặt tường lửa của mình đã được điều chỉnh. Bắt đầu bằng cách thay đổi ufw cài đặt để cho phép truy cập vào cổng 8000:

Check the status to ensure these permission settings have been updated successfully:

Output

Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 8000 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 8000 (v6) ALLOW Anywhere (v6)

Cài đặt tường lửa của bạn hiện đã được điều chỉnh thích hợp để cho phép kiểm tra kết nối của bạn trong bước tiếp theo.

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

Bây giờ bạn có thể xác minh rằng các cấu hình trong Django phát hiện đúng máy chủ MySQL của bạn. Bạn có thể làm điều này bằng cách chạy máy chủ. Nếu nó không thành công, có nghĩa là kết nối không hoạt động bình thường. Nếu không, kết nối hợp lệ.

Đầu tiên điều hướng đến thư mục sau:

From there, run the following command:

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

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

Output

Performing system checks... System check identified no issues (0 silenced). October 25, 2021 - 19:50:58 Django version 3.2.9, using settings 'blog.settings' Starting development server at http://your-server-ip:8000/ Quit the server with CONTROL-C.

Ghi chú: Bạn sẽ nhận thấy rằng bạn có các di chuyển chưa được áp dụng trong đầu ra. Đừng lo lắng, điều này không ảnh hưởng đến thiết lập ban đầu của ứng dụng và bạn có thể tiếp tục.

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

Trang mặc định của Django

Nếu trang của bạn xuất hiện tương tự như ảnh chụp màn hì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 tra ứng dụng của mình, hãy nhấn CTRL + C để ngăn chặn runserver chỉ huy. Điều này sẽ đưa bạn trở lại môi trường của bạn.

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

Deactivating your programming environment will bring you back to the terminal command prompt.

Conclusion

In this tutorial, you created the initial foundation of your Django blog. You have installed, configured, and connected MySQL to the Django backend. You've also added some important information to your application's settings.py tập tin chẳng hạn như TIME_ZONE, ALLOWED_HOSTS, import osvà thông tin đăng nhập cơ sở dữ liệu để kết nối ứng dụng Django của bạn với MySQL. Bạn cũng đã điều chỉnh cài đặt tường lửa để đảm bảo rằng quá trình kiểm tra diễn ra suôn sẻ.

Bây giờ cá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 mô hình và áp dụng di chuyển trong ứng dụng Django của mình.

.

Check Also

Cách cung cấp các ứng dụng Flask với Gunicorn và Nginx trên Ubuntu

Giới thiệu Trong hướng dẫn này, bạn sẽ xây dựng một ứng dụng Python bằng …