初始化 RESTful API 風格的博客系統

hellogithub 發佈 2020-04-24T02:44:34+00:00

這裡以Pipenv 為例,Virtualenv 或者 Docker 的啟動方式可以參考項目的 README。$ pipenv run python manage.py runserver瀏覽器訪問 http://127.0.0.1:8000/ 可進入博客首頁,http://127

作者:HelloGitHub-追夢人物

文中所涉及的示例代碼,已同步更新到 HelloGitHub-Team 倉庫

在 HelloDjango 全棧系列教程的第一步——Django博客教程(第二版)中,我們一步步地開發了一個功能完善的個人博客系統。

接下來,我們將使用 django-rest-framework,一步步為博客系統開發 RESTful API,並在這個過程中深入學習 django-rest-framework 的使用方法,為後續使用 Vue 開發博客應用提供後端 API 的支持(Vue 的開發教程將在 Django REST Framework 教程完結後推出,敬請期待)。

如果你已經跟著第一步的教程 Django博客教程(第二版)完成了博客系統的開發,那麼可以繼續在原來的項目上進行,只需要注意和這個教程中個別細微的差異就可以了。

你也可以 fork 新倉庫的項目,新倉庫和 Django博客教程(第二版)中示例倉庫代碼幾乎完全一樣,只是個別地方(例如 Docker 容器名、鏡像名等)做了一些修改,以體現本教程的特色。

隨便以哪個倉庫為基礎,你都可以順暢地跟進本教程。

項目代碼準備好以後,先來把本地開發環境搭建起來,過程非常簡單,只需要執行幾條命令就可以了。這裡以 Pipenv 為例,Virtualenv 或者 Docker 的啟動方式可以參考項目的 README

注意:

因為博客全文搜索功能依賴 Elasticsearch 服務,如果使用 Virtualenv 或者 Pipenv 啟動項目而不想搭建 Elasticsearch 服務的話,請先設置環境變量 ENABLE_HAYSTACK_REALTIME_SIGNAL_PROCESSOR=no 以關閉實時索引,否則無法創建博客文章。如果關閉實時索引,全文搜索功能將不可用。

Windows 設置環境變量的方式:set ENABLE_HAYSTACK_REALTIME_SIGNAL_PROCESSOR=no

Linux 或者 macOS:export ENABLE_HAYSTACK_REALTIME_SIGNAL_PROCESSOR=no

使用 Docker 啟動則無需設置,因為會自動啟動一個包含 Elasticsearch 服務的 Docker 容器。

第一步,進入項目的根目錄,安裝項目啟動所需依賴。關於虛擬環境的管理,如果不熟悉的話可以參考:

# --dev 參數會指導 pipenv 同時安裝線上運行時的依賴以及開發時所需的依賴$ pipenv install --dev

第二步,生成資料庫文件。

$ pipenv run python manage.py migrate

第三步,創建後台管理員帳戶。

$ pipenv run python manage.py createsuperuser

具體請參閱 創作後台開啟,請開始你的表演

第四步,運行開發伺服器。

$ pipenv run python manage.py runserver

瀏覽器訪問 http://127.0.0.1:8000/ 可進入博客首頁,http://127.0.0.1:8000/admin 為博客後台,可以使用 第三步 創建的超級管理員帳戶登錄。

第五步,為了方便開發和測試,運行腳本生成一些虛擬的測試數據。

$ pipenv run python -m scripts.fake

這樣,基礎項目就啟動成功了~

接下來就可以開始進行 RESTful API 的開發了。既然要使用 django-rest-framework,第一件事當然是先安裝它。進入到項目根目錄,運行:

$ pipenv install djangorestframework django-filter

django-filter 這個庫用來提供 API 查詢結果過濾的功能,我們後面會講到怎麼用。

將 django-rest-framework 添加到 INSTALLED_APPS 里:

django-rest-framework 還為我們提供了一個與 API 進行交互的後台,有時候 API 可能需要登錄認證,因此將 django-rest-framework 提供 API 交互後台和登錄認證 URL 添加進來:

這裡我們用到了 django-rest-framework 的 Router,它能幫我們自動註冊視圖函數到指定的 URL 路徑。DefaultRouter 類默認會幫我們生成一個API 交互後台的根視圖,直接訪問 http://127.0.0.1:8000/api/ 就可以進入 API 交互後台。

這個頁面會列出所有可用的 API,因為現在沒有開發任何 API,所以列表為空。

點擊右上角的 Log in 可進行認證登錄,登錄後就能和需要認證登錄才能訪問的 API 進行交互。

這個 API 交互後台是我們開發調試的利器,我們以後還會不斷接觸,到時候大家就能體會到他的作用了。

至此,django-rest-framework 的安裝和基本設置已經完成,接下來就來開始開發博客 API 了。

『講解開源項目系列』——讓對開源項目感興趣的人不再畏懼、讓開源項目的發起者不再孤單。跟著我們的文章,你會發現編程的樂趣、使用和發現參與開源項目如此簡單。歡迎留言聯繫我們、加入我們,讓更多人愛上開源、貢獻開源~

關鍵字: