做者: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 了。