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实现划词翻译
Apr 23 Python
Centos下实现安装Python3.6和Python2共存
Aug 15 Python
解决Python 使用h5py加载文件,看不到keys()的问题
Feb 08 Python
PyQt弹出式对话框的常用方法及标准按钮类型
Feb 27 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
Jun 04 Python
PowerBI和Python关于数据分析的对比
Jul 11 Python
python 三元运算符使用解析
Sep 16 Python
Python命令行click参数用法解析
Dec 19 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
May 22 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
Jun 27 Python
详解python tkinter 图片插入问题
Sep 03 Python
Python基础之元组与文件知识总结
May 19 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学习资料汇总与网址
2007/03/16 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
PHP防止图片盗用(盗链)的方法小结
2016/11/11 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
由document.body和document.documentElement想到的
2009/04/13 Javascript
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
JS中的log对象获取以及debug的写法介绍
2014/03/03 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
学习使用ExpressJS 4.0中的新Router的用法
2018/11/06 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
python查看zip包中文件及大小的方法
2015/07/09 Python
Django REST为文件属性输出完整URL的方法
2017/12/18 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
ubuntu系统下使用pm2设置nodejs开机自启动的方法
2018/05/12 NodeJs
关于sys.stdout和print的区别详解
2019/12/05 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
Python实现EM算法实例代码
2020/10/04 Python
一篇文章教你用python画动态爱心表白
2020/11/22 Python
python 实现逻辑回归
2020/12/30 Python
使用JS+CSS3技术:让你的名字动起来
2013/04/27 HTML / CSS
css3实现input输入框颜色渐变发光效果代码
2014/04/02 HTML / CSS
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
为什么要有struct关键字
2012/05/08 面试题
大学生毕业自荐信
2013/10/10 职场文书
科室工作的个人自我评价
2013/10/30 职场文书
中专毕业生自荐信
2013/11/16 职场文书
淘宝客服自我总结鉴定
2014/01/25 职场文书
敬老院院长事迹材料
2014/05/21 职场文书
个人安全承诺书
2014/05/22 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
PyTorch 如何设置随机数种子使结果可复现
2021/05/12 Python