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中method的参数传递过程
Apr 02 Python
python通过ftplib登录到ftp服务器的方法
May 08 Python
Scrapy使用的基本流程与实例讲解
Oct 21 Python
python微信撤回监测代码
Apr 29 Python
python ChainMap的使用和说明详解
Jun 11 Python
python实现数据分析与建模
Jul 11 Python
python解释器spython使用及原理解析
Aug 24 Python
Python3批量移动指定文件到指定文件夹方法示例
Sep 02 Python
Python 导入文件过程图解
Oct 15 Python
Python开发企业微信机器人每天定时发消息实例
Mar 17 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
Apr 01 Python
python实现定时发送邮件到指定邮箱
Dec 23 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
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
phpQuery让php处理html代码像jQuery一样方便
2015/01/06 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
用js生产批量批处理执行命令
2008/07/28 Javascript
JQuery 实现的页面滚动时浮动窗口控件
2009/07/10 Javascript
javascript面向对象编程代码
2011/12/19 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
2013/06/17 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
js判断是否为ie的方法小结
2014/01/13 Javascript
使用javascript实现Iframe自适应高度
2014/12/24 Javascript
javascript基础知识
2016/06/07 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
python将文本分每两行一组并保存到文件
2018/03/19 Python
python奇偶行分开存储实现代码
2018/03/19 Python
python购物车程序简单代码
2018/04/18 Python
基于Django与ajax之间的json传输方法
2018/05/29 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
2019/04/23 Python
使用python远程操作linux过程解析
2019/12/04 Python
parser.add_argument中的action使用
2020/04/20 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
理肤泉俄罗斯官网:La Roche-Posay俄罗斯
2018/07/24 全球购物
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
销售工作岗位职责
2013/12/24 职场文书
社会学专业学生职业规划书
2014/02/07 职场文书
党员民主生活会整改措施
2014/09/26 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
2015年领班工作总结
2015/04/29 职场文书
小学毕业教师寄语
2019/06/21 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python