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 除法小技巧
Sep 06 Python
在Django中同时使用多个配置文件的方法
Jul 22 Python
Python 将pdf转成图片的方法
Apr 23 Python
python单例模式获取IP代理的方法详解
Sep 13 Python
python 获取一个值在某个区间的指定倍数的值方法
Nov 12 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
Jan 08 Python
Python matplotlib学习笔记之坐标轴范围
Jun 28 Python
wxPython多个窗口的基本结构
Nov 19 Python
解决django中form表单设置action后无法回到原页面的问题
Mar 13 Python
如何学习Python time模块
Jun 03 Python
pytorch 查看cuda 版本方式
Jun 23 Python
python中pandas对多列进行分组统计的实现
Jun 18 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中查询SQL Server或Sybase时TEXT字段被截断的解决方法
2009/03/10 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
php获取本周星期一具体日期的方法
2015/04/20 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
PHP常用的排序和查找算法
2015/08/06 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
HTML中不支持静态Expando的元素的问题
2007/03/08 Javascript
Prototype String对象 学习
2009/07/19 Javascript
javascript动画之圆形运动,环绕鼠标运动作小球
2010/07/20 Javascript
深入理解Javascript中的循环优化
2013/11/09 Javascript
jQuery老黄历完整实现方法
2015/01/16 Javascript
jQuery实现美观的多级动画效果菜单代码
2015/09/06 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
详解nodejs 文本操作模块-fs模块(四)
2016/12/22 NodeJs
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
Angular模板表单校验方法详解
2017/08/11 Javascript
手机注册发送验证码倒计时的简单实例
2017/11/15 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
Next.js实现react服务器端渲染的方法示例
2019/01/06 Javascript
js Array.slice的8种不同用法示例
2019/07/10 Javascript
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
浅析JavaScript 函数柯里化
2020/09/08 Javascript
结合axios对项目中的api请求进行封装操作
2020/09/21 Javascript
详解appium+python 启动一个app步骤
2017/12/20 Python
python向企业微信发送文字和图片消息的示例
2020/09/28 Python
安全生产检讨书
2014/01/21 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
中职三好学生事迹材料
2014/08/24 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python