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 相关文章推荐
vc6编写python扩展的方法分享
Jan 17 Python
Python中统计函数运行耗时的方法
May 05 Python
详解Python之数据序列化(json、pickle、shelve)
Mar 30 Python
Python使用arrow库优雅地处理时间数据详解
Oct 10 Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 Python
Python基础之函数的定义与使用示例
Mar 23 Python
python requests更换代理适用于IP频率限制的方法
Aug 21 Python
opencv3/C++图像像素操作详解
Dec 10 Python
如何使用selenium和requests组合实现登录页面
Feb 03 Python
python简单实现最大似然估计&scipy库的使用详解
Apr 15 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 Python
python pyg2plot的原理知识点总结
Feb 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中register_globals参数为OFF和ON的区别(register_globals 使用详解)
2012/02/05 PHP
CI框架Session.php源码分析
2014/11/03 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
2017/08/01 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
Code: write(s,d) 输出连续字符串
2007/08/19 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
jQuery学习笔记 获取jQuery对象
2012/09/19 Javascript
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
javascript如何动态加载表格与动态添加表格行
2013/11/27 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
jQuery获得IE版本不准确webbrowser的解决方法
2014/02/23 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
分步解析JavaScript实现tab选项卡自动切换功能
2016/01/25 Javascript
Node.js程序中的本地文件操作用法小结
2016/03/06 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
template.js前端模板引擎使用详解
2017/10/10 Javascript
JS返回顶部实例代码
2020/08/09 Javascript
vue循环数组改变点击文字的颜色
2019/10/14 Javascript
Vue组件生命周期运行原理解析
2020/11/25 Vue.js
Python生成器generator用法示例
2018/08/10 Python
python网络应用开发知识点浅析
2019/05/28 Python
Python Sphinx使用实例及问题解决
2020/01/17 Python
2014年党员自我评议总结
2014/09/23 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
介绍信的格式
2015/01/30 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
2019年年中工作总结讲话稿模板
2019/03/25 职场文书
python办公自动化之excel的操作
2021/05/23 Python
解决tk mapper 通用mapper的bug问题
2021/06/16 Java/Android
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
2021/10/16 Python