文章首发个人微信公众号及博客:http://zmister.com/archives/260.html
欢迎访问个人博客:http://zmister.com 查看更多Python应用文章
欢迎关注个人微信公众号:州的先生 及时交流讨论
1.0 、开始
从本篇开始,我们将使用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后接上虚拟环境的名称就可以创建一个虚拟环境了,我们在目录下创建一个名为django_rest_env的虚拟环境:
virtual django_rest_env

默认情况下,virtualenv创建一个只包含了pip、wheel和setuptools这三个模块安装工具的全新Python环境。
在当前目录下,我们可以发现已经多出了一个新的文件夹——django_rest_env,点击进去可以查看我们创建的django_rest_env虚拟环境的结构,如下图所示:

对比我们本地安装成功的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虚拟环境——django_rest_env,使用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 = 'cn-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服务的开发和构建了。
网友评论