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 相关文章推荐
分享15个最受欢迎的Python开源框架
Jul 13 Python
解决python读取几千万行的大表内存问题
Jun 26 Python
python实现泊松图像融合
Jul 26 Python
django如何自己创建一个中间件
Jul 24 Python
Pyinstaller 打包exe教程及问题解决
Aug 16 Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 Python
python Popen 获取输出,等待运行完成示例
Dec 30 Python
Python打印特殊符号及对应编码解析
May 07 Python
python os模块常用的29种方法使用详解
Jun 02 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
Dec 11 Python
TensorFlow的环境配置与安装方法
Feb 20 Python
浅析Python OpenCV三种滤镜效果
Apr 11 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数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
2011/05/29 PHP
ThinkPHP连接Oracle数据库
2016/04/22 PHP
laravel 实现上传图片到本地和前台访问示例
2019/10/21 PHP
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
javascript闭包(Closure)用法实例简析
2015/11/30 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
jquery获取复选框checkbox的值实现方法
2016/05/30 Javascript
BootStrap按钮标签及基本样式
2016/11/23 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
Vue中的Vux配置指南
2017/12/08 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
vue中node_modules中第三方模块的修改使用详解
2019/05/31 Javascript
详解vue微信网页授权最终解决方案
2019/06/16 Javascript
[01:02:02]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第二局
2016/02/25 DOTA
Python和php通信乱码问题解决方法
2014/04/15 Python
跟老齐学Python之大话题小函数(2)
2014/10/10 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
Python2包含中文报错的解决方法
2018/07/09 Python
python2与python3共存问题的解决方法
2018/09/18 Python
python flask框架实现重定向功能示例
2019/07/02 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
python小白学习包管理器pip安装
2020/06/09 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
2020/11/11 Python
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
如何开启linux的ssh服务
2015/02/14 面试题
汽车销售顾问求职自荐信
2014/01/01 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
个人先进事迹总结
2015/02/26 职场文书
2015年主婚人婚礼致辞
2015/07/28 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
php 原生分页
2021/04/01 PHP