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实现备份文件实例
Sep 16 Python
基于Python实现通过微信搜索功能查看谁把你删除了
Jan 27 Python
python 循环遍历字典元素的简单方法
Sep 11 Python
Python使用sorted排序的方法小结
Jul 28 Python
python通过elixir包操作mysql数据库实例代码
Jan 31 Python
10款最好的Python开发编辑器
Jul 03 Python
Django实现基于类的分页功能
Oct 31 Python
Pyqt5自适应布局实例
Dec 13 Python
Python面向对象封装操作案例详解
Dec 31 Python
如何使用Python发送HTML格式的邮件
Feb 11 Python
python 给图像添加透明度(alpha通道)
Apr 09 Python
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
May 31 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
上海无线电三厂简史修改版
2021/03/01 无线电
PHP JSON 数据解析代码
2010/05/26 PHP
Smarty模板简单配置与使用方法示例
2016/05/23 PHP
搭建自己的PHP MVC框架详解
2017/08/16 PHP
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
jquery之Document元素选择器篇
2008/08/14 Javascript
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
js实现编辑div节点名称的方法
2014/12/17 Javascript
jQuery实现动态添加和删除一个div
2015/08/12 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
jQuery Mobile和HTML5开发App推广注册页
2016/11/07 Javascript
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
2017/01/12 NodeJs
jQuery EasyUI Layout实现tabs标签的实例
2017/09/26 jQuery
详解vue的diff算法原理
2018/05/20 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
2019/06/13 Javascript
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
Python标准库之sqlite3使用实例
2014/11/25 Python
Python的Flask框架中web表单的教程
2015/04/20 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
Python生成并下载文件后端代码实例
2020/08/31 Python
详解Python openpyxl库的基本应用
2021/02/26 Python
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
英国剑桥包官网:The Cambridge Satchel Company
2016/08/01 全球购物
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
美国婚礼装饰和活动用品批发供应商:Event Decor Direct
2018/10/12 全球购物
C++是不是类型安全的
2014/02/18 面试题
上课说话检讨书大全
2014/01/22 职场文书
2014年群众路线教育实践活动整改措施
2014/09/24 职场文书
贷款收入证明范本
2015/06/12 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js
《废话连篇——致新手》——chinapizza
2022/04/05 无线电
Win11控制面板快捷键是什么?Win11打开控制面板的方法汇总
2022/07/07 数码科技