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编写一个简单的FUSE文件系统的教程
Apr 02 Python
Python实现的摇骰子猜大小功能小游戏示例
Dec 18 Python
详谈Pandas中iloc和loc以及ix的区别
Jun 08 Python
python+os根据文件名自动生成文本
Mar 21 Python
利用python在大量数据文件下删除某一行的例子
Aug 21 Python
python 中值滤波,椒盐去噪,图片增强实例
Dec 18 Python
pycharm激活码有效到2020年11月底
Sep 18 Python
使用Python来做一个屏幕录制工具的操作代码
Jan 18 Python
Python3 Click模块的使用方法详解
Feb 12 Python
Python用requests库爬取返回为空的解决办法
Feb 21 Python
python爬虫框架feapde的使用简介
Apr 20 Python
Pytest中skip和skipif的具体使用方法
Jun 30 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获取用户IPv4或IPv6地址的代码
2012/11/15 PHP
改写函数实现PHP二维/三维数组转字符串
2013/09/13 PHP
php多文件上传实现代码
2014/02/20 PHP
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
php从csv文件读取数据并输出到网页的方法
2015/03/14 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
a标签的href与onclick事件的区别详解
2014/11/12 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
Bootstrap选项卡动态切换效果
2016/11/28 Javascript
详解微信小程序入门五: wxml文件引用、模版、生命周期
2017/01/20 Javascript
Nodejs+Socket.io实现通讯实例代码
2017/02/13 NodeJs
浅谈箭头函数写法在ReactJs中的使用
2017/08/22 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
JS基于封装函数实现的表格分页完整示例
2018/06/26 Javascript
js中apply()和call()的区别与用法实例分析
2018/08/14 Javascript
微信小程序常用的3种提示弹窗实现详解
2019/09/19 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
2021/01/29 jQuery
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
[01:54]TI珍贵瞬间系列(三):翻盘
2020/08/28 DOTA
Python入门篇之字符串
2014/10/17 Python
Tornado高并发处理方法实例代码
2018/01/15 Python
python遍历文件目录、批量处理同类文件
2019/08/31 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
Python偏函数实现原理及应用
2020/11/20 Python
毕业生的自我评价范文
2013/12/31 职场文书
大学毕业后的十年规划
2014/01/07 职场文书
新学期班主任寄语
2014/01/18 职场文书
毕业生就业协议书
2014/04/11 职场文书
服务承诺书格式
2014/05/21 职场文书
水电维修专业推荐信
2014/09/06 职场文书
2016年中秋节寄语大全
2015/12/07 职场文书
人生感悟经典句子
2019/08/20 职场文书
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技