做者:HelloGitHub-追夢人物python
在 HelloDjango 全棧系列教程的第一步——Django博客教程(第二版)中,咱們一步步地開發了一個功能完善的我的博客系統。git
接下來,咱們將使用 django-rest-framework,一步步爲博客系統開發 RESTful API,並在這個過程當中深刻學習 django-rest-framework 的使用方法,爲後續使用 Vue 開發博客應用提供後端 API 的支持(Vue 的開發教程將在 Django REST Framework 教程完結後推出,敬請期待)。github
若是你已經跟着第一步的教程 Django博客教程(第二版)完成了博客系統的開發,那麼能夠繼續在原來的項目上進行,只須要注意和這個教程中個別細微的差別就能夠了。web
你也能夠 fork 新倉庫的項目,新倉庫和 Django博客教程(第二版)中示例倉庫代碼幾乎徹底同樣,只是個別地方(例如 Docker 容器名、鏡像名等)作了一些修改,以體現本教程的特點。數據庫
隨便以哪一個倉庫爲基礎,你均可以順暢地跟進本教程。django
項目代碼準備好之後,先來把本地開發環境搭建起來,過程很是簡單,只須要執行幾條命令就能夠了。這裏以 Pipenv 爲例,Virtualenv 或者 Docker 的啓動方式能夠參考項目的 README。後端
注意:api
由於博客全文搜索功能依賴 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
裏:
blogproject/settings/common.py
INSTALLED_APPS = [
...
'rest_framework',
]
複製代碼
django-rest-framework 還爲咱們提供了一個與 API 進行交互的後臺,有時候 API 可能須要登陸認證,所以將 django-rest-framework 提供 API 交互後臺和登陸認證 URL 添加進來:
blogproject/urls.py
from rest_framework import routers
router = routers.DefaultRouter()
urlpatterns = [
...
path("api/", include(router.urls)),
path("api/auth/", include("rest_framework.urls", namespace="rest_framework")),
]
複製代碼
這裏咱們用到了 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 了。