Django+RestFramework API接口及接口文档并返回json数据操作


Posted in Python onJuly 12, 2020

系统:ubuntu18.04 x64

GitHub:https://github.com/xingjidemimi/DjangoAPI.git

安装

pip install django==2.1.5
pip install djangorestframework # rest api
pip install coreapi pygments markdown # 自动化接口文档

API示例

创建django项目

django-admin startproject DjangoAPI

创建应用

cd DjangoAPI

python manage.py startapp apiApp

项目代码

修改settings.py,添加应用到配置中

INSTALLED_APPS = [
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'rest_framework', # 添加rest_framework应用
 'apiApp', # 添加apiApp应用
]

执行数据库迁移

python manage.py migrate

创建管理员,会提示输入用户名:ubuntu,邮箱:ubuntu@ubuntu.ubuntu,密码:ubuntu123456

python manage.py createsuperuser

修改/api/models.py,创建数据库模型。

from django.db import models

class Test(models.Model):
 name = models.CharField(u'姓名', max_length=100, default='no_name')
 sex = models.CharField(u'性别', max_length=10, default='male')
 age = models.CharField(u'年龄', max_length=3, default='0')

 def __unicode__(self):
  return '%d: %s' % (self.pk, self.name)

创建模型后执行:

python manage.py makemigrations # 生成数据库迁移文件

python manage.py migrate # 执行数据库迁移

修改/api/admin.py,写后台管理代码

from django.contrib import admin
from apiApp.models import Test
# Register your models here.

@admin.register(Test)
class BlogTypeAdmin(admin.ModelAdmin):
 list_display = ('pk', 'name') # 在后台列表下显示的字段

运行项目

python manage.py runserver

出现如下内容表明成功:

System check identified no issues (0 silenced).
January 23, 2019 - 08:28:09
Django version 2.1.5, using settings 'DjangoAPI.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

浏览器输入:

http://127.0.0.1:8000/ # 出现django成功的界面

http://127.0.0.1:8000/admin # 进入管理后台

序列化模型类,在/api/下创建serializers.py,返回json数据

from rest_framework import serializers
from apiApp.models import Test

class TestSerializers(serializers.ModelSerializer):
 class Meta:
  model = Test # 指定的模型类
  fields = ('pk', 'name', 'sex', 'age',) # 需要序列化的属性

修改/api/views.py,视图

from django.shortcuts import render
from rest_framework import viewsets
from apiApp.models import Test
from apiApp.serializers import TestSerializers


class TestViewSet(viewsets.ModelViewSet):
 # 指定结果集并设置排序
 queryset = Test.objects.all().order_by('-pk')
 # 指定序列化的类
 serializer_class = TestSerializers

修改/urls.py/,配置主路由

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
 path('admin/', admin.site.urls),
 path('', include('apiApp.urls')), # 添加应用的路由地址
]

在/api/下创建urls.py,配置应用路由

from django.conf.urls import include
from django.urls import path
from rest_framework import routers
from apiApp import views
from rest_framework.documentation import include_docs_urls

API_TITLE = 'API Documents'
API_DESCRIPTION = 'API Information'


# 定义路由地址
route = routers.DefaultRouter()

# 注册新的路由地址
route.register(r'test', views.TestViewSet)

# 注册上一级的路由地址并添加
urlpatterns = [
 path('', include(route.urls)),
 # 接口文档路由
 path(r'docs/', include_docs_urls(title=API_TITLE, description=API_DESCRIPTION, authentication_classes=[], permission_classes=[]))
]

运行项目

python manage.py runserver

打开浏览器输入:

http://127.0.0.1:8000 # api主页

点击主页提供的链接http://127.0.0.1:8000/test进入下一级目录

http://127.0.0.1:8000/docs进入接口文档

使用Postman测试工具测试api数据

进入ubuntusoftware应用商店,搜索postman进行安装

在postman中输入http://127.0.0.1:8000/api/student点击send,并返回json数据。

以上这篇Django+RestFramework API接口及接口文档并返回json数据操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python正则表达式匹配中文用法示例
Jan 17 Python
Python yield 使用方法浅析
May 20 Python
Python 编码规范(Google Python Style Guide)
May 05 Python
python解决字符串倒序输出的问题
Jun 25 Python
python实现排序算法解析
Sep 08 Python
python批量从es取数据的方法(文档数超过10000)
Dec 27 Python
Python eval的常见错误封装及利用原理详解
Mar 26 Python
python3.6下Numpy库下载与安装图文教程
Apr 02 Python
在VS2017中用C#调用python脚本的实现
Jul 31 Python
pytorch 共享参数的示例
Aug 17 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
详解python常用命令行选项与环境变量
Feb 20 Python
Python3交互式shell ipython3安装及使用详解
Jul 11 #Python
Python QTimer实现多线程及QSS应用过程解析
Jul 11 #Python
面向新手解析python Beautiful Soup基本用法
Jul 11 #Python
基于python实现判断字符串是否数字算法
Jul 10 #Python
基于python实现计算两组数据P值
Jul 10 #Python
Python3爬虫中关于Ajax分析方法的总结
Jul 10 #Python
Python3爬虫中Ajax的用法
Jul 10 #Python
You might like
PHP之生成GIF动画的实现方法
2013/06/07 PHP
PHP小教程之实现链表
2014/06/09 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
学习ExtJS border布局
2009/10/08 Javascript
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
AngularJS基础 ng-if 指令用法
2016/08/01 Javascript
JavaScript实现格式化字符串函数String.format
2016/12/16 Javascript
JSONP基础知识详解
2017/03/19 Javascript
NodeJS学习笔记之Module的简介
2017/03/24 NodeJs
详解ES6之用let声明变量以及let loop机制
2017/07/15 Javascript
使用Vue-Router 2实现路由功能实例详解
2017/11/14 Javascript
vue项目使用微信公众号支付总结及遇到的坑
2018/10/23 Javascript
js实现每日签到功能
2018/11/29 Javascript
关于微信公众号开发无法支付的问题解决
2018/12/28 Javascript
详解VUE前端按钮权限控制
2019/04/26 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
python 对key为时间的dict排序方法
2018/10/17 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
详解PyCharm+QTDesigner+PyUIC使用教程
2019/06/13 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
python统计字符的个数代码实例
2020/02/07 Python
python 函数中的参数类型
2020/02/11 Python
基于django2.2连oracle11g解决版本冲突的问题
2020/07/02 Python
HTML5中meta属性的使用方法
2016/02/29 HTML / CSS
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
儿科护理实习自我鉴定
2013/09/19 职场文书
节约粮食标语
2014/06/18 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
欢迎家长标语
2014/10/08 职场文书
2016新教师岗前培训心得体会
2016/01/08 职场文书