Python用Django写restful api接口

用Python如何写一个接口呢,首先得要有数据,可以用我们在网站上爬的数据

大量的数据保存到数据库比较方便。我用的pymsql,pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。但目前在python3.x中,PyMySQL取代了MySQLdb。

1.连接数据库

 

2.创建数据库

 

Python用Django写restful api接口_第1张图片

3.爬取数据

 

Python用Django写restful api接口_第2张图片

4.保存到数据库

 

Python用Django写restful api接口_第3张图片

5.创建Web工程

运行我们的爬虫,很快数据库表里就有数据了。

Python用Django写restful api接口_第4张图片

然后开始写接口。我是通过Django+rest_framework来写的。

Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站。Django 中提供了开发网站经常用到的模块,常见的代码都为你写好了,减少重复的代码。

 

Django 目录结构

urls.py

网址入口,关联到对应的views.py中的一个函数(或者generic类),访问网址就对应一个函数。

views.py

处理用户发出的请求,从urls.py中对应过来, 通过渲染templates中的网页可以将显示内容,比如登陆后的用户名,用户请求的数据,输出到网页。

models.py

与数据库操作相关,存入或读取数据时用到这个,当然用不到数据库的时候 你可以不使用。

forms.py

表单,用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作,当然你也可以不使用。

templates 文件夹

views.py 中的函数渲染templates中的Html模板,得到动态内容的网页,当然可以用缓存来提高速度。

admin.py

后台,可以用很少量的代码就拥有一个强大的后台。

settings.py

Django 的设置,配置文件,比如 DEBUG 的开关,静态文件的位置等。

 

 

Django 常用操作

1)新建一个 django project

django-admin.py startproject project_name

 

2)新建 app

python manage.py startapp app_name

一般一个项目有多个app, 当然通用的app也可以在多个项目中使用。

还得在工程目录的settings.py文件在配置

 

Python用Django写restful api接口_第5张图片

在app/views.py下编写代码

 

在工程目录urls.py配置

 

通过python manage.py runserver启动,就会看到我们输出的“你好”了

 

3)创建数据库表 或 更改数据库表或字段

在app下的models.py创建表

 

Python用Django写restful api接口_第6张图片

运行命令,就可以生成对应的表

 

在views.py文件里就可以获取数据库的数据

 

Python用Django写restful api接口_第7张图片

6.写接口

接口使用rest_framework,rest_framework是一套基于Django的REST框架,是一个强大灵活的构建 Web API 的工具包。

写接口三步完成:连接数据库、取数据、数据输出

 

1)连接数据库

在工程目录下的settings.py文件下配置

 

Python用Django写restful api接口_第8张图片

2)取数据

既然要取数据,那model肯定得和数据库的一致,我发现一个快捷的方式可以把数据库中的表生成对应的model,在项目目录下执行命令

1python manage.py inspectdb

 

可以看到下图

Python用Django写restful api接口_第9张图片

取我们表的model拷贝到app下的models.py里

 

Python用Django写restful api接口_第10张图片

创建一个序列化Serializer类

提供序列化和反序列化的途径,使之可以转化为,某种表现形式如json。我们可以借助serializer来实现,类似于Django表单(form)的运作方式。在app目录下,创建文件serializers.py。

 

Python用Django写restful api接口_第11张图片

这样在views.py就可以来获取数据库的数据了

 

3) 数据输出客户端或前端

 REST框架提供了两种编写API视图的封装。

@api_view装饰器,基于方法的视图。

继承APIView类,基于类的视图。

 

request.data会自行处理输入的json请求

使用格式后缀明确的指向指定的格式,需要添加一个format关键字参数

http http://127.0.0.1:8000/getlist.json # JSON 后缀

http://127.0.0.1:8000/getlist.api # 可视化 API 后缀

http://127.0.0.1:8000/getlist/ code="print 123"post

 

Python用Django写restful api接口_第12张图片

4)分页

最后别忘了在urls.py配置URL,通过浏览器就可以看到json数据了。

Python用Django写restful api接口_第13张图片

Python用Django写restful api接口_第14张图片

 

 当然app也是可以调用我们的接口的

Python用Django写restful api接口_第15张图片

Python用Django写restful api接口_第16张图片

还有个问题

我们的数据有好几千条,一块返回来很不合理,所以需要分页,当然rest_framework框架提供了这个功能,post请求不支持,需要自己查数据库或者切片来进行返回。来看看rest_framework是如何来分页的。在models.py里创建一个类

 

Python用Django写restful api接口_第17张图片

在serializers.py创建俩个类,为什么是俩个?因为我们有俩个接口,一个明细,一个列表,而列表是不需要把字段的所有数据都返回的

 

Python用Django写restful api接口_第18张图片

在views.py里编写

 

Python用Django写restful api接口_第19张图片

到这里就完成了接口的编写,都是对框架的简单使用,希望对大家有帮助。

你可能感兴趣的:(python)