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正则表达式re模块详细介绍
May 29 Python
Python 字典与字符串的互转实例
Jan 13 Python
Python实现Pig Latin小游戏实例代码
Feb 02 Python
Python中的单继承与多继承实例分析
May 10 Python
Python中修改字符串的四种方法
Nov 02 Python
详解Django-restframework 之频率源码分析
Feb 27 Python
Python实现多态、协议和鸭子类型的代码详解
May 05 Python
python下的opencv画矩形和文字注释的实现方法
Jul 09 Python
Python log模块logging记录打印用法解析
Jan 20 Python
python orm 框架中sqlalchemy用法实例详解
Feb 02 Python
python中upper是做什么用的
Jul 20 Python
降低python版本的操作方法
Sep 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读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
2012/07/31 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
JavaScript高级程序设计(第3版)学习笔记 概述
2012/10/11 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
2014/03/19 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
jQuery中deferred对象使用方法详解
2016/07/14 Javascript
总结在前端排序中遇到的问题
2016/07/19 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
angular2 ng2 @input和@output理解及示例
2017/10/10 Javascript
浅谈vue路径优化之resolve
2017/10/13 Javascript
vue中$set的使用(结合在实际应用中遇到的坑)
2018/07/10 Javascript
Angular2 自定义表单验证器的实现方法
2018/12/14 Javascript
python 多线程应用介绍
2012/12/19 Python
django中模板的html自动转意方法
2018/05/27 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
J2EE相关知识面试题
2013/08/26 面试题
高校教师岗位职责
2014/03/18 职场文书
专项法律服务方案
2014/06/11 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
2015年采购员工作总结
2015/04/27 职场文书
职场:企业印章管理制度(模板)
2019/10/18 职场文书
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python