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中Selenium模拟JQuery滑动解锁实例
Jul 26 Python
Python中的Django基本命令实例详解
Jul 15 Python
Django异步任务之Celery的基本使用
Mar 23 Python
使用python接入微信聊天机器人
Mar 31 Python
python频繁写入文件时提速的方法
Jun 26 Python
Django框架中序列化和反序列化的例子
Aug 06 Python
python 提取文件指定列的方法示例
Aug 07 Python
Python csv模块使用方法代码实例
Aug 29 Python
python匿名函数的使用方法解析
Oct 10 Python
Python 转换RGB颜色值的示例代码
Oct 13 Python
python小程序基于Jupyter实现天气查询的方法
Mar 27 Python
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 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
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
类之Prototype.js学习
2007/06/13 Javascript
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
文本框的字数限制功能jquery插件
2009/11/24 Javascript
JQUERY操作JSON实例代码
2010/02/09 Javascript
javascript禁用键盘功能键让右击及其他键无效
2013/10/09 Javascript
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
2014/09/26 NodeJs
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
微信小程序点击控件修改样式实例详解
2017/07/07 Javascript
微信小程序简单实现form表单获取输入数据功能示例
2017/11/30 Javascript
React-native桥接Android原生开发详解
2018/01/17 Javascript
js遍历添加栏目类添加css 再点击其它删除css【推荐】
2018/06/12 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
js canvas实现二维码和图片合成的海报
2020/11/19 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
js实现简易ATM功能
2020/10/27 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
python进程类subprocess的一些操作方法例子
2014/11/22 Python
python实现控制台打印的方法
2019/01/12 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
Python队列、进程间通信、线程案例
2019/10/25 Python
python中shell执行知识点
2020/05/06 Python
VICHY薇姿俄罗斯官方网上商店:法国护肤品牌,火山温泉水
2019/11/22 全球购物
在求职信中如何凸显个人优势
2013/10/30 职场文书
总裁助理岗位职责
2014/02/17 职场文书
行政人事专员岗位职责
2014/03/05 职场文书
2014年团委工作总结
2014/11/13 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书
预备党员入党感言
2015/08/01 职场文书
详解在OpenCV中如何使用图像像素
2022/03/03 Python
Nginx的基本概念和原理
2022/03/21 Servers