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爬取网站数据保存使用的方法
Nov 20 Python
python解析基于xml格式的日志文件
Feb 25 Python
浅谈pyhton学习中出现的各种问题(新手必看)
May 17 Python
Python中的单行、多行、中文注释方法
Jul 19 Python
详解django实现自定义manage命令的扩展
Aug 13 Python
python 利用已有Ner模型进行数据清洗合并代码
Dec 24 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
Feb 13 Python
python 操作mysql数据中fetchone()和fetchall()方式
May 15 Python
python中count函数知识点浅析
Dec 17 Python
Python的scikit-image模块实例讲解
Dec 30 Python
pandas 按日期范围筛选数据的实现
Feb 20 Python
详解分布式系统中如何用python实现Paxos
May 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
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
php生出随机字符串
2017/07/06 PHP
关于 byval 与 byref 的区别分析总结
2007/10/08 Javascript
Array.prototype.slice.apply的使用方法
2010/03/17 Javascript
匹配任意字符的正则表达式写法
2010/04/29 Javascript
jquery插件开发方法(初学者)
2012/02/03 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
window resize和scroll事件的基本优化思路
2014/04/29 Javascript
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
深入分析javascript中console命令
2016/08/14 Javascript
bootstrap Table插件使用demo
2017/08/07 Javascript
微信小程序使用map组件实现路线规划功能示例
2019/01/22 Javascript
微信小程序缓存过期时间的使用详情
2019/05/12 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
2019/06/10 Javascript
jQuery实现异步上传一个或多个文件
2020/08/17 jQuery
[01:01:31]2018DOTA2亚洲邀请赛3月29日小组赛B组 Mineski VS paiN
2018/03/30 DOTA
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
Python实现遍历数据库并获取key的值
2015/05/17 Python
python模块之re正则表达式详解
2017/02/03 Python
python 多线程将大文件分开下载后在合并的实例
2018/11/09 Python
Python中垃圾回收和del语句详解
2018/11/15 Python
python框架django项目部署相关知识详解
2019/11/04 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
2013/01/09 HTML / CSS
BSTN意大利:德国街头和运动文化高品质商店
2020/12/22 全球购物
linux面试题参考答案(7)
2012/10/29 面试题
产品工艺师的岗位职责
2013/11/15 职场文书
大学毕业自我评价
2014/02/02 职场文书
领导班子三严三实心得体会
2014/10/13 职场文书
2014年安全员工作总结
2014/11/13 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
会计工作检讨书
2015/02/19 职场文书
入党积极分子群众意见
2015/06/01 职场文书