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系列之教你如何根据图片生成字符画
May 23 Python
Python中模拟enum枚举类型的5种方法分享
Nov 22 Python
Python中Iterator迭代器的使用杂谈
Jun 20 Python
python实现百万答题自动百度搜索答案
Jan 16 Python
Python中文件的读取和写入操作
Apr 27 Python
浅谈pytorch和Numpy的区别以及相互转换方法
Jul 26 Python
python绘制彩虹图
Dec 16 Python
python装饰器代替set get方法实例
Dec 19 Python
利用python实现凯撒密码加解密功能
Mar 31 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
Feb 07 Python
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 Python
python实现简单的三子棋游戏
Apr 28 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 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
php中current、next与reset函数用法实例
2014/11/17 PHP
php经典算法集锦
2015/11/14 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
微信JSSDK分享功能图文实例详解
2019/04/08 PHP
jQuery 源码分析笔记(6) jQuery.data
2011/06/08 Javascript
javascript复制对象使用说明
2011/06/28 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
2013/01/24 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
vue中render函数的使用详解
2018/10/12 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
2019/05/05 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
2019/11/01 Javascript
vue实例的选项总结
2020/06/09 Javascript
React服务端渲染原理解析与实践
2021/03/04 Javascript
python处理文本文件并生成指定格式的文件
2014/07/31 Python
python搜索指定目录的方法
2015/04/29 Python
Python简单删除目录下文件以及文件夹的方法
2015/05/27 Python
python 读取DICOM头文件的实例
2018/05/07 Python
用Python3创建httpServer的简单方法
2018/06/04 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
Python3爬虫里关于Splash负载均衡配置详解
2020/07/10 Python
基于HTML5+Webkit实现树叶飘落动画
2017/12/28 HTML / CSS
表达自我的市场:Society6
2018/08/01 全球购物
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
现金会计岗位职责
2013/12/05 职场文书
初级会计求职信范文
2014/02/15 职场文书
结婚喜宴主持词
2014/03/14 职场文书
2015年教师节慰问信
2015/03/23 职场文书
创卫工作总结2015
2015/04/22 职场文书
小学数学教学反思范文
2016/02/16 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python