Thứ năm, 07/05/2020 | 00:00 GMT+7

Cách tạo ứng dụng Django và kết nối nó với cơ sở dữ liệu

Một khuôn khổ web open-souce miễn phí được viết bằng Python, Django 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 hướng dẫn này, bạn sẽ học cách cài đặt nền tảng ban đầu cho một trang web blog có kết nối với database 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 django-admin , tạo database MySQL và sau đó kết nối ứng dụng web với database .

Lưu ý điều này sẽ cung cấp cho bạn một môi trường phát triển để hoạt động trên ứng dụng web blog của bạn, nhưng bạn cần thực hiện nhiều bước hơn trước khi đưa blog của bạn lên internet và cần cài đặt domain và bổ sung các lớp bảo mật.

Yêu cầu

Bạn nên cài đặt một môi trường Python trên server của bạn . Trong hướng dẫn này, ta sẽ sử dụng server Ubuntu 20.04, nhưng vì trọng tâm của hướng dẫn này là Django, các nguyên tắc này sẽ được áp dụng cho các hệ điều hành khác.

Để cài đặt Python, hãy làm theo hướng dẫn của ta Cách cài đặt Python 3 và Cài đặt Môi trường Lập trình trên Server Ubuntu 20.04 .

Với Python, ta có thể chuyển sang tạo ứng dụng của bạn .

Bước 1 - Cài đặt MySQL

Ta sẽ sử dụng MySQL làm database của bạn . Bạn có thể xen kẽ muốn sử dụng database khác hoặc đã cài đặt database , trong trường hợp đó, bạn nên bỏ qua bước này.

Để cài đặt MySQL vào server Ubuntu 20.04, hãy nhập như sau:

  • sudo apt install mysql-server

Bạn sẽ nhận được kết quả sau:

Output
● mysql.service - MySQL Community Server      Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)      Active: active (running) since Thu 2020-05-07 20:22:51 UTC; 3min 7s ago    Main PID: 2052 (mysqld)      Status: "Server is operational"       Tasks: 38 (limit: 1137)      Memory: 317.4M      CGroup: /system.slice/mysql.service              └─2052 /usr/sbin/mysqld 

Đảm bảo rằng phản hồi bạn nhận được cho biết server MySQL của bạn đang active . Khi điều đó là đúng, bạn có thể tiếp tục hướng dẫn này.

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

Để tạo nền tảng cho ứng dụng của ta , ta cần tạo khung dự án bằng lệnh django-admin . Dự án được tạo này sẽ là nền tảng của ứng dụng blog của ta .

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

  • mkdir my_blog_app

Bây giờ, chuyển đến folder mới được tạo:

  • cd my_blog_app

Tiếp theo, chuyển sang 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 cái hiện có hoặc tạo một cái mới. Ta sẽ gọi ta là env , nhưng bạn nên sử dụng một cái tên có ý nghĩa đối với bạn. Sau khi nó được tạo, bạn có thể kích hoạt nó.

  • python3 -m venv env
  • . env/bin/activate

Bây giờ hãy cài đặt Django vào môi trường này nếu bạn chưa làm như vậy:

  • pip install django

Trong folder my_blog_app , ta sẽ tạo một dự án bằng cách chạy lệnh sau:

  • django-admin startproject blog

Xác minh nó hoạt động bằng cách chuyển đến blog/ folder :

  • cd blog

Thư mục blog/ lẽ ra đã được tạo trong folder hiện tại, ~/my_blog_app/ , sau khi chạy lệnh django-admin trước đó.

Chạy ls để xác minh các mục cần thiết đã được tạo. Cần có một folder blog và một file tin manage.py :

Output
blog manage.py 

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

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

Vì ta đã tạo dự án khung, bây giờ ta có một file settings.py .

Để blog của ta có thời gian chính xác được liên kết với khu vực của ta , ta sẽ chỉnh sửa file settings.py để nó sẽ 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. Ví dụ của ta , ta sẽ sử dụng thời gian America/New_York .

Ta muốn chỉnh sửa file , vì vậy hãy mở đường dẫn đến file bằng editor mà ta chọn. Ở đây, ta sẽ sử dụng nano.

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

Vì ta đang chỉnh sửa trường TIME_ZONE , ta sẽ chuyển đến phần dưới cùng của file , tương tự như bên dưới.

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 ... 

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

settings.py
... # Internationalization # https://docs.djangoproject.com/en/2.0/topics/i18n/  LANGUAGE_CODE = 'en-us'  TIME_ZONE = 'America/New_York'  USE_I18N = True ... 

Hãy giữ cho file mở vì ta cần thêm đường dẫn cho các file tĩnh của bạn . Các file được cung cấp 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 các file cần thiết nào để hiển thị trang web hoàn chỉnh, bao gồm JavaScript, CSS và hình ảnh.

Đi tới cuối file settings.py và thêm STATIC_ROOT như hình dưới đây:

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ờ ta đã thêm múi giờ và đường dẫn cho các file tĩnh, tiếp theo ta nên thêm IP của bạn vào danh sách các server được phép. Điều hướng đến dòng của file settings.py có nội dung ALLOWED_HOSTS , nó sẽ nằm ở đầu file settings.py .

settings.py
... # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True  ALLOWED_HOSTS = ['your server IP address']  # Application definition ... 

Thêm địa chỉ IP của server của bạn giữa dấu ngoặc vuông và dấu ngoặc đơn.

Khi thấy ổn với những thay đổi mình đã thực hiện, hãy lưu file . Nếu bạn đang sử dụng nano, bạn có thể thực hiện bằng cách nhấn CTRL + X rồi nhấn y để xác nhận các thay đổi.

Bạn đã chỉnh sửa thành công file settings.py của bạn để múi giờ thích hợp đã được cấu hình . Bạn cũng đã thêm đường dẫn cho các file tĩnh của bạn và đặt ip address của bạn thành ALLOWED_HOST cho ứng dụng của bạn.

Cuối cùng, hãy tạo một admin-user để bạn có thể sử dụng giao diện quản trị Djano . Hãy làm điều này với lệnh createsuperuser :

  • python manage.py createsuperuser

Bạn sẽ được yêu cầu nhập tên user , địa chỉ email và password cho user của bạn.

Đến đây, ta có thể tiếp tục cài đặt kết nối database của bạn .

Bước 4 - Cài đặt trình kết nối database MySQL

Để sử dụng MySQL với dự án của ta , ta cần một thư viện trình kết nối database Python 3 tương thích với Django. Vì vậy, ta sẽ cài đặt trình kết nối database , mysqlclient , là một version phân nhánh của MySQLdb .

Trước tiên, hãy đảm bảo bạn đã cài đặt python3-dev . Bạn có thể cài đặt python3-dev bằng cách chạy lệnh sau:

  • sudo apt install python3-dev

Bây giờ ta có thể cài đặt các thư viện và tiêu đề phát triển Python và MySQL cần thiết:

  • sudo apt install python3-dev libmysqlclient-dev default-libmysqlclient-dev

Nhấn yENTER để chấp nhận cài đặt.

Sau khi cài đặt hoàn tất, ta sẽ sử dụng pip3 cài đặt mysqlclient thư viện từ PyPi . Vì version pip của ta trỏ đến pip3 , ta chỉ có thể sử dụng pip .

  • pip install mysqlclient

Bạn sẽ nhận được kết quả tương tự như thế này, xác minh nó đang cài đặt đúng cách:

successfully installed mysqlclient
... Successfully installed mysqlclient-1.4.6 

Bây giờ ta đã cài đặt thành công cho khách hàng sử dụng MySQL PyPi mysqlclient thư viện kết nối.

Bước 5 - Tạo database

Bây giờ khung của ứng dụng Django của bạn đã được cài đặt và mysqlclientmysql-server đã được cài đặt, ta cần cấu hình phần backend Django của bạn để tương thích với MySQL.

Đăng nhập qua MySQL root bằng lệnh sau:

  • sudo mysql -u root

Ta sẽ biết ta đang ở trong server MySQL khi thay đổi nhanh chóng của ta :

  •  

Hãy kiểm tra các database hiện tại bằng lệnh sau:

  • SHOW DATABASES;

Bạn sẽ thấy kết quả tương tự như sau, giả sử rằng bạn chưa tạo bất kỳ database nào:

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

Lưu ý: Nếu bạn gặp lỗi khi cố gắng kết nối, hãy xác minh password của bạn là chính xác và bạn đã cài đặt đúng MySQL. Nếu không, hãy xem lại hướng dẫn về cách cài đặt và cấu hình MySQL .

Theo mặc định, bạn sẽ có 4 database đã được tạo, information_schema , MySQL , performance_schemasys . Ta sẽ không cần phải chạm vào chúng, vì chúng chứa thông tin quan trọng đối với chính server MySQL.

Bây giờ, bạn đã đăng nhập thành công vào server MySQL của bạn , ta sẽ tạo database ban đầu chứa dữ liệu cho blog của ta .

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

  • CREATE DATABASE blog_data;

Sau khi tạo thành công database , bạn sẽ thấy kết quả sau:

Output
Query OK, 1 row affected (0.00 sec) 

Lưu ý: Nếu bạn thấy kết quả sau:

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

Sau đó, như lỗi đã nêu, một database của tên blog_data đã tồn tại.

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

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

 

Tiếp theo, xác minh database hiện được liệt kê trong danh sách các database có sẵn của bạn:

  • SHOW DATABASES;

Bạn sẽ thấy rằng database blog_data nằm trong số các database được đưa vào kết quả :

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

Tiếp theo, ta sẽ tạo một account user MySQL riêng biệt mà ta sẽ sử dụng riêng để vận hành database mới của bạn . Việc tạo database và account cụ thể có thể hỗ trợ ta từ quan điểm quản lý và bảo mật. Ta 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.

Ta sẽ tạo account này, đặt password và cấp quyền truy cập vào database ta đã tạo. Ta có thể thực hiện việc này bằng lệnh lệnh sau. Hãy nhớ chọn một password mạnh tại đây cho user database của bạn nơi ta có password :

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

Tiếp theo, cho database biết rằng djangouser của ta phải có quyền truy cập hoàn toàn vào database mà ta đã cài đặt :

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

Đến đây bạn có một database và account user , mỗi account được tạo riêng cho Django. Ta cần xóa các quyền để version hiện tại của MySQL biết về những thay đổi gần đây mà ta đã thực hiện:

  • FLUSH PRIVILEGES;

Sau khi hoàn tất, bạn có thể thoát khỏi server MySQL bằng lệnh EXIT; hoặc nhấn CTRL + D

Bước 6 - Thêm kết nối database MySQL vào ứng dụng của bạn

Cuối cùng, ta sẽ thêm thông tin đăng nhập kết nối database vào ứng dụng Django của bạn.

Lưu ý: Điều quan trọng cần nhớ là cài đặt kết nối, theo tài liệu Django, được sử dụng theo thứ tự sau:
- OPTIONS
- NAME , USER , PASSWORD , HOST , PORT
- Các MySQL option files.

Hãy áp dụng các thay đổi cần thiết để kết nối ứng dụng blog Django của bạn với MySQL.

Điều hướng đến file settings.py và thay thế các dòng DATABASES hiện tại bằng dòng sau. Ta sẽ cấu hình từ điển database của bạn để từ điển biết sử dụng MySQL làm chương trình backend database của bạn và từ file nào để đọc thông tin đăng nhập kết nối database của bạn.

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

Xóa các dòng ở đó và thay thế bằng dòng sau, đảm bảo giữ đúng số lượng dấu ngoặc nhọn.

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',         },     } } ... 

Lưu và đóng file .

Tiếp theo, hãy chỉnh sửa file cấu hình để nó có thông tin đăng nhập MySQL của bạn. Sử dụng nano as sudo để chỉnh sửa file và thêm thông tin sau:

  • 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.

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 bạn là chính xác, hãy lưu file .

Khi file đã được chỉnh sửa, ta 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

Xin lưu ý 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 7 - Kiểm tra kết nối MySQL với ứng dụng

Ta cần xác minh các cấu hình trong Django phát hiện đúng server MySQL của bạn. Ta có thể làm điều này bằng cách chạy server . Nếu không thành công, 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ệ.

Trước tiên, hãy áp dụng các thay đổi của ta đối với django như sau:

  • python manage.py migrate

Ta cần chuyển đến folder sau:

  • cd ~/my_blog_app/blog/

Từ đó, ta có thể chạy lệnh sau:

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

Đến đây bạn sẽ thấy kết quả tương tự như sau:

Output
Performing system checks...  System check identified no issues (0 silenced).  You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them.  January 4, 2018 - 15:45:39 Django version 2.0.1, using settings 'blog.settings' Starting development server at http://your-server-ip:8000/ Quit the server with CONTROL-C. 

Lưu ý: Bạn sẽ thấy rằng bạn có các di chuyển chưa được áp dụng trong kết quả . Nhưng, đừng lo lắng, điều này sẽ được giải quyết trong các hướng dẫn sắp tới. Điều này không ảnh hưởng đến cài đặt ban đầu của ứng dụng của ta . Xin vui lòng tiếp tục.

Làm theo hướng dẫn từ kết quả và nhấp vào 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 nó đang hoạt động bình thường.

Trang mặc định của Django

Nếu trang web 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 đang thực hiện với thử nghiệm ứng dụng của bạn, bạn có thể nhấn CTRL + C để ngăn chặn sự runserver lệnh. Điều này sẽ đưa bạn trở lại môi trường lập trình của bạn.

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

  • deactivate

Việc hủy kích hoạt môi trường lập trình của bạn sẽ đưa bạn trở lại dấu nhắc lệnh terminal .

Kết luận

Trong hướng dẫn này, bạn đã tạo nền tảng ban đầu cho blog Django của bạn . Bạn đã cài đặt, cấu hình và kết nối MySQL với phần backend Django. Bạn cũng đã thêm một số thông tin quan trọng vào file settings.py trong ứng dụng của bạn , chẳng hạn như TIME_ZONEALLOWED_HOSTS .

Bây giờ các cài đặt và cấu hình cơ bản này đã hoàn tất, bây giờ 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 bạn .


Tags:

Các tin trước

Cách sử dụng Di chuyển cơ sở dữ liệu và Trình seeding để Thiết lập Cơ sở dữ liệu Tóm tắt trong Laravel 2020-02-13
Cách tạo một ứng dụng lập hóa đơn nhẹ với node: Cơ sở dữ liệu và API 2019-12-12
Cách cài đặt WordPress với cơ sở dữ liệu được quản lý trên Ubuntu 18.04 2019-08-20
Tìm hiểu cơ sở dữ liệu phân đoạn - Database Sharding 2019-02-07
Cách thiết lập cơ sở dữ liệu từ xa để tối ưu hóa hiệu suất trang web với MySQL trên Ubuntu 18.04 2018-11-28
Cách quản lý cơ sở dữ liệu SQL 2018-09-26
Cách cải thiện tìm kiếm cơ sở dữ liệu với tìm kiếm toàn văn bản (Full Text Search) trong MySQL 5.6 trên Ubuntu 16.04 2017-10-30
Cách thiết lập cơ sở dữ liệu đồ thị Titan với Cassandra và ElasticSearch trên Ubuntu 16.04 2017-06-27
Cách thiết lập cơ sở dữ liệu từ xa để tối ưu hóa hiệu suất trang web với MySQL trên Ubuntu 16.04 2017-06-05
Cách gỡ lỗi WordPress "Lỗi thiết lập kết nối cơ sở dữ liệu" 2017-04-21