使用Django构建Python Restful Web服务开篇

Python编程应用实战,尽在掌握

从本篇开始,我们将使用Python和其最流行最全面的Web框架——Django来创建RestFul服务。

在本篇中,我们将安装使用Django创建RestFul服务所需的基本工具以搭建一个用于Django RestFul Web服务的开发环境。

在本书中,所有的环境都是基于:

  • Windows操作系统(其他操作系统平台的使用方法可能略有差异)
  • Python 3.5+(还在使用Python2的同学请自觉回避)
  • Django 2.0+

在本篇,我们将会涉及到以下内容:

  • virtualenv虚拟环境的创建和使用;
  • 在虚拟环境中安装Django和RestFul模块;
  • Django项目和应用的创建和配置;
  • 安装Postman客户端工具;

1.1 、创建并使用Python虚拟环境

1.1.1、为什么需要一个Python虚拟环境

有过Python编程经验的同学大概会有这样的体会:随着涉及的范围越来越多,或者开发的项目各有不同,我们安装的Python第三方模块也随之增多,一方面过多的第三方模块,不便于管理;另一方面,不同的项目之间所需求和依赖的第三方模块版本可能也有差异。这时候如果只在一个Python环境下进行项目开发,可能会出现这个项目能运行,另一个项目却报错的问题。

面对这种问题,一个解决方法是使用Python虚拟将不同的项目独立划分出来,每个项目都是最基础的Python环境,需要什么模块,需要什么版本的模块,都自行安装。

1.1.2、使用virtualenv创建一个Python虚拟环境

virtualenv是一个用于创建独立的Python环境的工具,用于解决Python开发中版本依赖和兼容的问题。

virtualenv的安装命令为:

pip install virtualenv

使用pip install virtualenv命令安装好virtualenv模块之后,我们就可以在命令行界面直接使用virtualenv命令了:

由上图可以发现,virtualenv有很多个选项,但是在这里我们使用默认的使用方法,在virtualenv后接上虚拟环境的名称就可以创建一个虚拟环境了,我们在目录下创建一个名为djangorestenv的虚拟环境:

virtual django_rest_env

默认情况下,virtualenv创建一个只包含了pip、wheel和setuptools这三个模块安装工具的全新Python环境。

在当前目录下,我们可以发现已经多出了一个新的文件夹——djangorestenv,点击进去可以查看我们创建的djangorestenv虚拟环境的结构,如下图所示:

对比我们本地安装成功的Python目录下的结构,可以发现,其可以说是麻雀虽小,五脏俱全:

在Scripts子目录下有很多可供我们使用的Python脚本,其中的activate脚本用来激活当前的虚拟环境,代码如下所示:

Scripts\activate

当看到命令行中目录前出现一个括号包含着虚拟环境的名称,说明我们已经激活了虚拟环境。

如果需要退出当前的虚拟环境,可以使用Script子目录下的deactivate脚本来实现虚拟环境的退出,代码如下所示:

Scripts\deactivate

1.2、安装Django和RestFul模块

在创建好Python虚拟环境之后,我们开始安装我们所需要的模块——Django和DjangoRestFrameWork。

Django用于在Python中提供Web服务,DjangoRestFrameWork则使得Django具备提供基于Restful 的Web服务。

在本书写作之时,Django 2.0已经全新发布,其带来了很多新的特性和功能,虽然Django 1.11版本会继续支持到2022年,但在此,我们仍然采用最新的Django 2.0版本。

在virtualenv环境中使用pip工具安装Django:

pip install django

在virtualenv环境中使用pip工具安装django-rest-framwork:

pip install djangorestframwork

安装完成之后,我们进入Python Shell中测试一下安装是否成功:

结果引入没有报错并且打印出了它们的版本号,说明我们的安装是成功的。

1.3 、规划项目和Rest Api

完成了上述步骤之后,我们可以正式使用Django和django-rest-framework来创建Restful服务了。

但是在此之前,我们先来规划一下我们的这个用于提供Restful服务的Django项目。

首先,我们创建的是一个用于记录电影和评分的项目,既然是使用的Restful来提供服务,那么我们根据Restful的规范,定义以下HTTP方法及其作用范围:

  • GET:用于获取电影列表;
  • GET:用于获取电影;
  • POST:用于在电影列表中创建电影;
  • PUT:用于修改电影;
  • DELETE:用于删除电影;

1.4、创建和配置Django项目

现在,我们可以开始这个基于Django开发的Restful 服务的开发了。首先来创建一个Django项目。

1.4.1、创建Django项目和应用

进入激活之前创建的vietualenv虚拟环境——djangorestenv,使用Django的命令——django-admin来创建一个项目,代码如下所示:

django-admin startproject moviesapi

然后,进入到moviesapi目录下,利用manage.py工具,创建一个应用,代码如下所示:

python .\manage.py startapp movies

1.4.2、添加所需应用到项目

在Django项目和应用都创建好之后,我们先来进行一些初步的配置,将刚刚安装的django-rest-framework模块和movies应用添加到moviesapi项目中。

打开moviesapi目录下的settings.py文件,在第33行左右的位置,有一个名为INSTALLED_APPS的列表变量,我们修改如下代码所示:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'movies',
    'django_filters'
]

1.4.3 修改项目时区

这个操作不是必须的,但是为了便于友好地显示,我们将项目默认语言改为中文,在settings.py文件中,修改变量LANGUAGE_CODE的值为cn-hans,代码如下所示:

LANGUAGE_CODE = 'zh-hans'

为了便于时间的计算和显示,我们将项目默认的时区从UTC时区修改为中国的时区,代码如下所示:

TIME_ZONE = 'Asia/Shanghai'

1.5、安装Postman测试工具

在此,我们推荐安装一个工具——Postman,用于测试Restful服务。Restful服务中使用到了HTTP协议中的多种方法,而常规的浏览器只是提供GET方法的显示请求,对于其他方法来说,就不是很好进行测试。虽然可以使用命令行工具来测试,但是操作起来并不顺手。所以在此推荐使用这个界面友好的工具——Postman。

打开Postman的官网(https://www.getpostman.com/),点击下载按钮:

跳转到下载页面后,根据自己的操作系统选择合适的版本:

最后执行安装包即可。

安装完成后,打开软件,其界面如下图所示:

可以发现,我们可以显式地调用各种HTTP协议方法。对于Postman更多的用法,我们会在接下来的章节中介绍到。

1.2、本章小结

本章从Python虚拟环境virtualenv的创建开始,介绍了一整个基于Django开发Restful服务的Web环境的搭建,最后还介绍安装了一个非常有用的restful接口测试工具——Postman。在完成了本章的基础上,我们就可以进行项目的Restful服务的开发和构建了。

原文发布于微信公众号 - 州的先生(zmister2016)

原文发表时间:2018-05-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Ubuntu 14.04上配置Apache以使用自定义错误页面

Apache是世界上最受欢迎的Web服务器。它功能强大,功能丰富且灵活。在设计网页时,有助于自定义那些客户将看的所有内容,当然这些内容也包括他们请求不可用内容时...

660
来自专栏YG小书屋

kudu简介与操作方式

2185
来自专栏YG小书屋

kudu介绍与操作方式

Kudu是cloudera开源的运行在hadoop平台上的列式存储系统,拥有Hadoop生态系统应用的常见技术特性,运行在一般的商用硬件上,支持水平扩展,高可用...

9105
来自专栏Laoqi's Linux运维专列

Php-fpm相关配置

2765
来自专栏文渊之博

SSRS报表连接超时的问题

这段时间遇到一个问题就是ReportService 中采用了远程连接的报表偶尔会断开连接,导致报表导出异常,查阅了很多资料,几天来就是断断续续的终于解决了这个问...

1889
来自专栏Aloys的开发之路

ssh相关原理学习与常见错误总结

欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinn...

883
来自专栏北京马哥教育

大神教你DIY高性能运维堡垒体系

概述 不怕出问题,就怕出问题找不到原因 运维团队一般会有个需求就是记录运维或者开发同事在服务器上的操作记录,比如进行一些常规审核或者是服务器被黑了、服务器日志被...

3556
来自专栏我是攻城师

Spark Streaming如何使用checkpoint容错

3787
来自专栏程序员的碎碎念

JavaScript实现登录注册验证

学习需要坚持,堕落了一星期,学也不是,玩也不对,今天终于跑到图书馆来学习。 言归正传,今天要做的就是登录注册页面的验证和与数据库连接的操作。这...

3004
来自专栏IMWeb前端团队

fis3 文档学习研究

一、安装 安装初始化 npm i -g fis3 fis3 -v fis3 init 二、配置 类似Gruntfile.js或Gulpfile.js,新建fis...

1990

扫码关注云+社区