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 相关文章推荐
在Heroku云平台上部署Python的Django框架的教程
Apr 20 Python
Python 异常处理的实例详解
Sep 11 Python
python学习之matplotlib绘制散点图实例
Dec 09 Python
对python 多个分隔符split 的实例详解
Dec 20 Python
Python常见数据结构之栈与队列用法示例
Jan 14 Python
浅谈python中get pass用法
Mar 19 Python
解决Python正则表达式匹配反斜杠''\''问题
Jul 17 Python
Python 使用matplotlib模块模拟掷骰子
Aug 08 Python
详解Python图像处理库Pillow常用使用方法
Sep 02 Python
TensorFlow设置日志级别的几种方式小结
Feb 04 Python
Python字典添加,删除,查询等相关操作方法详解
Feb 07 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
Feb 16 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
信用卡效验程序
2006/10/09 PHP
php项目打包方法
2008/02/18 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
PHP输出XML格式数据的方法总结
2017/02/08 PHP
AutoSave/自动存储功能实现
2007/03/24 Javascript
jqPlot 图表中文API使用文档及源码和在线示例
2012/02/07 Javascript
js里怎么取select标签里的值并修改
2012/12/10 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
2020/11/24 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
vue实现自定义H5视频播放器的方法步骤
2019/07/01 Javascript
Python3读取文件常用方法实例分析
2015/05/22 Python
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
详解tensorflow实现迁移学习实例
2018/02/10 Python
使用PyInstaller将python转成可执行文件exe笔记
2018/05/26 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
在mac下查找python包存放路径site-packages的实现方法
2018/11/06 Python
Python的matplotlib绘图如何修改背景颜色的实现
2019/07/16 Python
Python 3.8正式发布重要新功能一览
2019/10/17 Python
Django-imagekit的使用详解
2020/07/06 Python
安装不同版本的tensorflow与models方法实现
2021/02/20 Python
利用html5 canvas动态画饼状图的示例代码
2018/04/02 HTML / CSS
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
幼师专业求职推荐信
2013/11/08 职场文书
求职推荐信范文
2013/12/01 职场文书
岳父生日宴会答谢词
2014/01/13 职场文书
岗位职责的构建方法
2014/02/01 职场文书
公务员综合考察材料
2014/02/01 职场文书
倡议书范文
2014/04/16 职场文书
大学生工作求职信
2014/06/23 职场文书
暑期实践个人总结
2015/03/06 职场文书
大学生就业指导课心得体会
2016/01/15 职场文书