作者:HelloGitHub-追梦人物
在 HelloDjango 全栈系列教程的榜首步——Django博客教程(第二版)中,咱们一步步地开发了一个功用完善的个人博客体系。
接下来,咱们将运用 django-rest– K _-framework,一步步为博客体系开发 RESTful API,并在这个过程中深入学习 django-rest-framework 的运用方法,为后续运用 Vue 开发博客运用供给后端 API 的支撑(Vue 的开发教程将在Z u V Z 4 Y M ( / Django REST Framework 教程完结后推出,敬请期待)。
假如你现已跟着榜首步的教程 Django博客教程(第二版)完成了博客体系的开发,那么能够持续在原来的项目上进行,只需求留意和这个教[ c s程中单个细微的差异就能够了。
你也能够 fork 新库房的项目,新库房和 Django博客教程(第二版)中示例库房代码几乎彻底一样,c _ = q 5 a只是单个当地(例如 Docker 容器名、镜像名等)做了一些修改,以体现本教程的特征9 G g f U y @ V。
随意以哪个库房为根底,你都能够顺利地跟进本教程。
项目代码准备好以后,先来把本地开发环境建立起来,过程十分简略,只需求执行几P : / K – ; .条指令就能够了。这儿以 Pipenv 为例,Virtualenv 或许 Docker 的发动方式能够参阅项目的 README。
留意:
因为博客全文查找功用依; u ] 6 s *靠 Elasticsearch 服务,假如运用 Virtualenv 或许 Pipenv 发动% ; 6 P p | C z项目而不想建立 Elasticsearch 服务的话,请先设置环境变量
ENABLE_HAYSTACK_REALTIME_SIGNAL_PROCESSOR=no
以封闭实时索引,不然无法创立博客文章。假如封闭实时索引,全文D ] p 1 I Q c K查找功用将不可用。Windows 设置环境变量& 7 t G D / K D R的方式:
set ENABLE_HAYSTACKk { *_REALTIME_SI% O z V ( y 0 9 kGNAL_PROCESSOR=no
Linux 或许 macl 0 } l @OS:
export EN~ r K ~ h wABLE_HAYST. k % B 1 t _ OACK_REALTIME_SIGNAL_PROCESSOR=no
运用 Docker 发动则/ g i o |无需设置,因为会主动发动一个包括 ElasticQ l $search 服务的 Docker 容器。
榜首步,进入项目的根目录,装置项目发动所需依* o l 5 E r $靠。关于虚拟环境的管理,假如不熟悉的话能够参阅:
#--dev参数会指导pipenv一起装置线上运转时的依s X : w 1靠以及开发时所需的依靠
$pipenvinstall--dev
第二步,生成数据库文件。
$pipe! 2 a Tnvrunpythonmanage.pymigrate
第三步,创立后台管理员账户。
$pipenvrunpythonmanage.pycreatesuperuser
详细请参阅 创造后台敞开,请开始你的表演。
第四步,运转开发服务器。
$pipenvrunpythonmanage.pyrunserver
浏览器拜访 http://127.0.0.1s C e = b G:8000/ 可进入v 7 Z k博客主页,http://127.0.0.1:8000/admin 为博客后台,能够运用 第三步 创立的超级管理员账户登录。
第五步,为了方便开发和测试,运转脚本生成一些虚拟的测试数据。
$pipenvrunpython-mscripts.fake
这样,根底项目就发动成功了~
接下来就能够开始进行 RESTful API 的开发了。既然要运用 django-rest-framework,榜首件E _ s事当然是先装置它。进入到项目根目录,运转:
$pipenvinstal8 k Y a ) B t / wldjangorestframO p @ F X w ` Neworkdjango-filter
django-filter 这个库用来供给 API 查询结果过滤的功用,咱们后面会讲到怎么用。
将 django-rest-framework 添加到 INSTALLED_APPS
里:
blogproject/settings/common.py
INSTALLED_APPS=[
...
'rest_framework',
]
dT h z 2 ojango-rest-framework 还为咱们供给了一个与 API 进行交互的后台,有时候 API 可能需求登录认证,z # &因而将 django-rest-framework 供给 API 交互后台和登录认证 URL 添加进来:
blogproject/urls.py
fromrest_frameworkimportrouZ z S C n Mters
router=routers.DefaultRouter()
urlpau v Y :tterns=[
..3 : L.
path("api/",iC c t | 3 7 j Tnclude(router.urls)),
path("api/auth/",include("rest_framework.urls",namespace="rest_framework")),
]
这儿咱们用到了 django-rest-framework 的 Router,它能帮咱们主动注册视图函数到指定的 URG E V GL 路径。DefaultRouter
类默认会帮咱们生成一| Y T + B d w c个API 交互后台的根视图,直接拜访 http://127.0.0.1:8000/api/ 就能够进入 API 交互后台。
这u 8 l X M v w =个页面会列出一切可用的 API,因为现在没有开发任何 API,所以列表为空。
点击右上角的 Log in 可进行认证登录,登录后就能和需求认证登录才干拜访的 API 进行交互。
这个 API 交互后台y a i 0 C是咱们开发调试的利器,咱们以后还会不断触摸= n B = P u C n –,到时候大家就能领会到他的作用了。
至此,django-rest-framex ` q j C U { pwork 的装置和根本设置现已完成,接下来就来开始开发博客 API 了。