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中的一些陷阱与技巧小结
Jul 10 Python
python 遍历字符串(含汉字)实例详解
Apr 04 Python
Python基于回溯法子集树模板解决找零问题示例
Sep 11 Python
python设定并获取socket超时时间的方法
Jan 12 Python
Python实现简单层次聚类算法以及可视化
Mar 18 Python
python操作文件的参数整理
Jun 11 Python
python手写均值滤波
Feb 19 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
Nov 28 Python
python3字符串输出常见面试题总结
Dec 01 Python
python爬虫基础之urllib的使用
Dec 31 Python
java关于string最常出现的面试题整理
Jan 18 Python
浅析python中特殊文件和特殊函数
Feb 24 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编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
PHP微信发送推送消息乱码的解决方法
2019/02/28 PHP
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
2015/03/04 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
2015/06/12 Javascript
js表单中选择框值的获取及表单的序列化
2015/12/17 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
jquery请求servlet实现ajax异步请求的示例
2017/06/03 jQuery
基于JavaScript实现百度搜索框效果
2020/06/28 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
微信小程序多音频播放进度条问题
2018/08/28 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
javascript随机变色实例代码
2019/10/15 Javascript
深入理解 TypeScript Reflect Metadata
2019/12/12 Javascript
微信小程序返回上一页传参并刷新过程解析
2019/12/13 Javascript
angular中的post请求处理示例详解
2020/06/30 Javascript
Jquery 获取相同NAME 或者id删除行操作
2020/08/24 jQuery
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
[05:23]DOTA2-DPC中国联赛2月1日Recap集锦
2021/03/11 DOTA
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
Python列表与元组的异同详解
2019/07/02 Python
如何通过python的fabric包完成代码上传部署
2019/07/29 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
金融专业个人求职信范文
2013/11/28 职场文书
旅游网创业计划书
2014/01/31 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
《夕阳真美》教学反思
2014/04/27 职场文书
部门年终奖分配方案
2014/05/07 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
交警失职检讨书
2015/01/26 职场文书
唐山大地震观后感
2015/06/05 职场文书
公司员工宿舍管理制度
2015/08/07 职场文书
创业计划书之少年玩具店
2019/09/05 职场文书