介紹
Django 是一個使用Python編寫的免費、開源的Web框架。這個工具可以實現可擴展性、重用性和快速開發。
在本教程中,您將學習如何為具有與MySQL數據庫連接的博客網站建立初始基礎。這將涉及使用django-admin
創建博客Web應用程序的骨架結構,創建MySQL數據庫,並將Web應用程序連接到數據庫。
Django將為您提供一個開發環境,以便您可以在其中開發博客Web應用程序,但在將您的博客上線到互聯網之前,您需要採取更多步驟。
先決條件
要遵循本教程,您將需要:
- 一台具有非root
sudo
權限的Ubuntu 22.04服務器和防火牆。請按照我們的Ubuntu 22.04初始服務器設置指南進行設置。 - MySQL 安裝用於作為資料庫。您可以按照我們的教程在 Ubuntu 22.04 上安裝 MySQL來進行設置。
- A Python environment set up. For this, follow our tutorial on How To Install Python 3 and Set Up a Programming Environment on Ubuntu 22.04
.
一切安裝和設置完成後,您可以進入第一步驟。
第1步 — 創建資料庫
Django 支援多個流行的資料庫管理系統,但本指南專注於將 Django 連接到 MySQL 資料庫。為了做到這一點,您需要在 MySQL 實例上創建一個資料庫,以及一個 Django 可以用來連接到資料庫的 MySQL 使用者配置文件。
為此,請使用以下命令連接到您的 MySQL 資料庫,作為root MySQL 使用者:
當提示變更時,您就知道自己在 MySQL 伺服器中:
使用以下命令檢查當前資料庫:
假設您尚未創建任何資料庫,您的輸出將類似於以下內容:
Output+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
默認情況下,您已經創建了 4 個資料庫:information_schema
、MySQL
、performance_schema
和 sys
。您不需要觸及這些資料庫,因為它們包含了對 MySQL 伺服器本身非常重要的資訊。
相反,請創建一個初始的資料庫,用於存儲您的網誌資料。
要在MySQL中创建数据库,请运行以下命令,并为您的数据库使用有意义的名称:
成功创建数据库后,您的输出将如下所示:
OutputQuery OK, 1 row affected (0.00 sec)
验证数据库现在是否列为可用数据库之一:
应该在输出中列出blog_data
数据库:
Output+--------------------+
| Database |
+--------------------+
| information_schema |
| blog_data |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
接下来,创建一个单独的MySQL用户帐户,Django将用于操作新数据库。创建特定的数据库和帐户可以从管理和安全性方面支持您。在本指南中,我们将使用名称djangouser。您可以使用任何您喜欢的名称,但选择一个描述性的名称可能会有所帮助。
您将创建此帐户、设置密码,并授予其访问您创建的数据库的权限。首先,通过输入以下命令创建用户并设置其密码。请通过替换此示例中的password
来为您的数据库选择一个强密码:
让数据库知道djangouser应该完全访问您设置的数据库:
现在您有了一个专门为Django创建的数据库和用户帐户。刷新权限,以便当前的MySQL实例了解您所做的最近更改:
完成后,您可以通过编写EXIT;
或按CTRL + D
退出MySQL服务器。
步驟 2 — 建立 MySQL 選項檔案
不要在 Django 配置文件中指定 MySQL 連接詳細信息,您可以將它們存儲在一個選項檔案中。許多 MySQL 程序可以讀取選項檔案 — 也稱為配置文件 — 以獲取啟動選項或連接詳細信息。這樣做很方便,因為您只需將數據庫登錄憑證存儲在一個地方。
使用您首選的文本編輯器打開 my.cnf
配置文件以更新您的 MySQL 憑證。這裡我們將使用 nano
:
添加以下行並包含您的相關信息:
…
[client]
database = blog_data
user = djangouser
password = your_actual_password
default-character-set = utf8
請注意,utf8
被設置為默認編碼。這是在 MySQL 中編碼 Unicode 數據的常見方法。確保詳細信息正確無誤後,保存並關閉文件。如果您使用 nano
編輯文件,可以通過按下 CTRL + O
保存文件,然後按下 CTRL + X
關閉編輯器。
編輯完文件後,重新啟動 MySQL 以使更改生效:
請注意,重新啟動 MySQL 需要幾秒鐘,請耐心等待。
第三步 – 创建初始的 Django 项目框架
在这一步中,您将使用 django-admin
命令生成项目框架,为您的应用程序奠定基础。
导航到您想要构建博客应用程序的目录。在该目录中,创建一个特定的目录来构建该应用程序。为您正在构建的应用程序取一个有意义的名称。作为示例,我们将把它命名为 my_blog_app
:
现在,导航到新创建的目录:
接下来,进入您想要在 Django 中工作的编程环境。您可以使用现有的环境,也可以创建一个新的环境。以下命令创建一个名为 env
的新环境,但您应该使用一个对您有意义的名称:
一旦创建完成,您可以激活它:
如果您还没有在此环境中安装 Django,请现在安装它:
在 my_blog_app
目录中,运行以下命令生成一个项目:
通过导航到 blog/
目录来验证是否成功:
然后运行 ls
命令验证项目文件夹中是否创建了必要的文件和目录:
输出将列出 blog
目录和一个 manage.py
文件:
Outputblog manage.py
現在您已經創建了一個包含博客應用程序初始開始的項目目錄,您可以繼續下一步。
步驟4 — 安裝 MySQL 數據庫連接器
為了在您的項目中使用 MySQL,您需要一個與 Django 兼容的 Python 3 數據庫連接器庫。此步驟概述了如何安裝一個這樣的數據庫連接器,即 mysqlclient
,這是 MySQLdb
的一個分支版本。
首先,安裝必要的 MySQL 開發標頭和庫:
接下來,使用 pip
安裝 wheel
套件。 Wheel 是 Python 中用於從 Python 套件索引安裝模塊的打包格式。從 wheel 套件安裝 Python 程序通常比從其源代碼構建包更快速和更節省資源。為了安裝並使用打包為 wheel 的程序,您首先需要確保已安裝了 wheel
套件:
然後繼續安裝 mysqlclient
:
您的輸出將類似於以下內容,確認客戶端已經正確安裝:
Output...
Successfully installed mysqlclient-2.1.1
您現在已成功安裝了 MySQL 客戶端,使用了 PyPi 的 mysqlclient
連接器庫。
步驟5 — 編輯設置
之前運行 django-admin
時,它會為 Django 創建一個配置文件,名為 settings.py
。您需要更改此文件中的一些默認設置,以便一切正常運作。
要編輯該文件,使用您喜歡的文本編輯器打開文件的路徑:
為了讓您的博客擁有與您所在地區相關聯的正確時間,您可以編輯 settings.py
文件,使其使用您當前的時區。您可以使用這個 時區列表 作為參考。在我們的示例中,我們將使用 America/New_York
時區。
在文件內部,導航到文件底部附近的 TIME_ZONE
字段:
...
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
...
修改 TIME_ZONE
行,將其設置為您當前的時區。在本示例中,我們將使用紐約的時區:
...
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'America/New_York'
USE_I18N = True
...
保持文件打開,因為接下來,您需要為您的靜態文件添加一個路徑。從您的 Django Web 應用程序提供的文件稱為 靜態文件。這可能包括用於渲染完整網頁的任何文件,包括 JavaScript、CSS 和圖像。
轉到 settings.py
文件的末尾並添加 STATIC_ROOT
:
…
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
...
現在您已經添加了時區和靜態文件的路徑,將您的 IP 添加到允許的主機列表中。導航到 settings.py
文件中顯示 ALLOWED_HOSTS
的行,它將位於 settings.py
文件的頂部。在方括號之間添加您的服務器 IP 地址,用單引號括起來:
...
ALLOWED_HOSTS = ['your_server_IP_address']
...
接下來,添加提供各種目錄功能的 Python OS 模塊。如果沒有此模塊,當設置管理用戶以開始使用 Django 介面時,您將收到錯誤消息。為此,您需要導入將在您的相應操作系統上運行的 os
模塊。在 from pathlib import Path
行上面添加以下行:
...
import os
from pathlib import Path
...
到目前為止,您已經編輯了您的 settings.py
文件,以便配置正確的時區。您還添加了靜態文件的路徑,將您的 ip 地址
設置為應用程序的 ALLOWED_HOST
,並導入了 Python OS 模塊,以幫助稍後設置管理用戶。
要添加到文件中的最後一個片段是數據庫連接凭據,以將您的 Django 博客應用程序連接到 MySQL。為此,找到文件中的 DATABASES
字典。默認情況下,它看起來如下:
…
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
...
用以下行替換 DATABASES
字典的 ENGINE
和 NAME
選項:
...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': '/etc/mysql/my.cnf',
},
}
}
...
'ENGINE': 'django.db.backends.mysql'
行告訴Django使用其內建的MySQL數據庫後端。 read_default_file
選項指向之前您編輯的 /etc/mysql/my.cnf
,這告訴Django它可以在哪裡找到相關的連接詳細信息以連接到您在第1步中創建的MySQL數據庫。
請注意,Django按照以下順序讀取數據庫連接設置:
OPTIONS
NAME
、USER
、PASSWORD
、HOST
、PORT
- MySQL選項文件
通過在此示例中將Django指向MySQL選項文件的OPTIONS
設置,它將優先於任何NAME
設置,否則如果您將其指向OPTIONS
設置之外,它將覆蓋選項文件。
在此時,您可以保存並關閉文件。
接下來,通過運行以下命令檢查遷移更改:
然後,運行migrate
以確保更改已生效:
現在,您的更改已經遷移,您可以創建一個管理用戶以供Django管理界面使用。使用createsuperuser
命令執行此操作:
系統將提示您為用戶輸入用戶名、電子郵件地址和密碼。
完成此信息後,您可以繼續調整防火牆設置以允許進行測試。
第6步 — 調整防火牆設定
在測試您的 Django 網絡應用程序之前,您必須確保已調整防火牆設置。首先更改您的 ufw
設置以允許訪問端口 8000
:
檢查狀態以確保這些權限設置已成功更新:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
8000 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
8000 (v6) ALLOW Anywhere (v6)
您的防火牆設置現在已經正確調整,以便在下一步測試您的連接。
第7步 — 測試 MySQL 對應用程序的連接
現在,您可以驗證 Django 中的配置是否正確地檢測到您的 MySQL 服務器。您可以通過運行服務器來執行此操作。如果失敗,則意味著連接工作不正常。否則,連接有效。
首先切換到以下目錄:
然後運行以下命令:
您將收到類似以下的輸出:
OutputPerforming 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.
注意:您將注意到輸出中有未應用的遷移。別擔心,這不會影響應用程序的初始設置,您可以繼續進行。
請按照輸出中的指示並訪問建議的鏈接 http://your-server-ip:8000/
,檢查您的 Web 應用程序是否正常工作。
如果您的頁面顯示類似於上面的屏幕截圖,則您的 Django 應用程序正在按預期運行。
測試應用程序完成後,按下 CTRL + C
以停止 runserver
命令。這將返回您的編程環境。
當您準備離開 Python 環境時,可以運行 deactivate
命令:
停用您的編程環境將返回您到終端命令提示符。
結論
在本教程中,您建立了 Django 博客的初始基礎。您已安裝、配置並將 MySQL 連接到 Django 後端。您還向應用程序的 settings.py
文件中添加了一些重要信息,例如 TIME_ZONE
、ALLOWED_HOSTS
、import os
,以及數據庫憑據以將 Django 應用程序連接到 MySQL。您還調整了防火牆設置,以確保測試進行順利。
現在,這些基本設置和配置完成後,您可以開始在 Django 應用程序中開發模型並應用遷移。