作者: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 里:

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 了。


关注公众号加入交流群

初始化 RESTful API 风格的博客系统的更多相关文章

  1. Ghost:一款简约风格博客系统

    前言 本文将介绍一种最快速的创建Ghost博客系统的方法,并实现绑定二级域名到该博客系统.本文以本博客的“微博客”为例. 一键创建Ghost博客系统 Kite 是 Ghost 博客托管商,网址为:ht ...

  2. Solo 博客系统 1.7.0 发布 - 新版 MD 编辑器

    本次发布主要是更新了 Markdown 编辑器,加入了全屏.Emoji 自动完成.粘贴时自动转换为 MD 格式的特性.(1.7.0 版本变更记录请看这里) 目前的 Markdown 编辑器有多好用呢? ...

  3. 欢迎阅读daxnet的新博客:一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统

    2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客.当然,我写博客也不是从2008年才开始的,在更早时候,也在CSDN和系统分析员协会(之后名为"希赛网" ...

  4. 一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统

    2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客.当然,我写博客也不是从2008年才开始的,在更早时候,也在CSDN和系统分析员协会(之后名为“希赛网”)个人空间发布过一些 ...

  5. 基于Microsoft Azure、ASP.NET Core和Docker的博客系统

    欢迎阅读daxnet的新博客:一个基于Microsoft Azure.ASP.NET Core和Docker的博客系统   2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客 ...

  6. 讲解开源项目:5分钟搭建私人Java博客系统

    本文适合刚学习完 Java 语言基础的人群,跟着本文可了解和运行 Tale 项目.示例均在 Windows 操作系统下演示 本文作者:HelloGitHub-秦人 HelloGitHub 推出的< ...

  7. 从零开始,搭建博客系统MVC5+EF6搭建框架(5),博客详情页、留言、轮播图管理、右侧统计博文

    一.博客系统进度回顾 上一遍博客介绍到,系统已经实现到了发布以及前台布局展示,接下来就是实现一些,详情页,留言.轮播图管理.右侧博文统计信息实现. 二.博客系统详情页实现 2.1先来看看详情页展示的效 ...

  8. 从零开始,搭建博客系统MVC5+EF6搭建框架(4)下,前后台布局实现、发布博客以及展示。

    一.博客系统进度回顾 目前已经完成了,前台展示,以及后台发布的功能,最近都在做这个,其实我在国庆的时候就可以弄完的,但是每天自己弄,突然最后国庆2天,连电脑都不想碰,所以就一直拖着,上一篇写了前端实现 ...

  9. 从零开始,搭建博客系统MVC5+EF6搭建框架(4)上,前后台页面布局页面实现,介绍使用的UI框架以及JS组件

    一.博客系统进度回顾以及页面设计 1.1页面设计说明 紧接前面基础基本完成了框架搭建,现在开始设计页面,前台页面设计我是模仿我博客园的风格来设计的,后台是常规的左右布局风格. 1.2前台页面风格 主页 ...

随机推荐

  1. Mysql性能优化:如何给字符串加索引?

    导读 现代大部分的登录系统都支持邮箱.手机号码登录两种方式,那么如何在邮箱或者手机号码这个字符串上建立索引才能保证性能最佳呢? 今天这篇文章就来探讨一下在Mysql中如何给一个字符串加索引才能达到性能 ...

  2. adb的连接设备故障分析(三)

    一,如果使用adb devices进行检测,发现没有任何设备信息,我们就需要检查是否有手机/模拟器连接上 二,如果是手机进行连接,windows右下角有出来如下提示的话,需要检查你的手机驱动是否有安装 ...

  3. Oracle 10g客户端的安装和配置

    1.双击Oracle11g_database安装目录下的Setup.exe. 2.选择“基本安装”,设置“安装位置”,填写“数据库名”和“口令”,点击“下一步”. 3.点击“下一步”. 4.一般会出现 ...

  4. WePY框架 input,checkbox-group,radio-group等change 一般处理方法

    布局搞定了,接下来就是数据处理方面了 form表单中常用标签,绑定change方法: 方法的具体实现 根据打印出来e的结果可以看到,e指代当前标签对象,包含属性方法等 从detail中可以获取多选框选 ...

  5. CUDA编程入门

    CUDA是一个并行计算框架.用于计算加速.是nvidia家的产品.广泛地应用于现在的深度学习加速. 一句话描述就是:cuda帮助我们把运算从cpu放到gpu上做,gpu多线程同时处理运算,达到加速效果 ...

  6. 深入理解NIO(三)—— NIO原理及部分源码的解析

    深入理解NIO(三)—— NIO原理及部分源码的解析 欢迎回到淦™的源码看爆系列 在看完前面两个系列之后,相信大家对NIO也有了一定的理解,接下来我们就来深入源码去解读它,我这里的是OpenJDK-8 ...

  7. 2.用eclipse创建maven Web

    一.其他步骤与上一个博客相同,故不赘述,这里要记得选war→Finish 二.在项目上右键选Properties 三.搜索到Project Facets,把勾取消掉,点Apply 四.重新勾选后出现以 ...

  8. [vijos1574]摇钱树<dp+贪心>

    题目链接:https://vijos.org/p/1574 这道题是昨晚一个叫Ztravellers的大佬推荐的,确实觉得这是一道很有意思的题,很多方面都很有意思: 初见这道题,估计想法都是贪心,因为 ...

  9. J. Justifying the Conjecture(规律——整数拆分)

    题目链接 五校友谊赛终于开始了,话不多说A题吧. 从前从前有一个正整数n,你需要找到一个素数x和一个合数y使x+y=n成立,这样就可以双剑合并了. 素数是一个大于1的自然数,它的因数只有1与它自己本身 ...

  10. MyBatis(四):SqlSession及其工厂类的作用域和生命周期

    本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出1便就懂!b站搜索狂神说即可 https://space.bilibili.com/95256449?spm_id_from=333.788 ...