django:通过Django REST framework实现RESTful API

关于REST framework和RESTful API是什么就不再赘述,可以自行搜索

1 配置

1、这里需要安装相关插件
pip install djangorestframework django-filter  Markdown 
2、settings配置

安装APP
django:通过Django REST framework实现RESTful API_第1张图片
django:通过Django REST framework实现RESTful API_第2张图片

2 创建接口

1、创建serializers文件

创建serializers文件,用来存放接口的过滤器

from rest_framework import serializers

from ShopAPP.models import *

class GoodsSerializer(serializers.HyperlinkedModelSerializer):
    """
    声明查询的表和返回的字段
    """
    class Meta:  # 元类
        model = Goods  # 要进行接口序列化的模型
        # 序列要返回的字段
        fields = ['goodsName', 'goodsPrice', 'goodsNumber']

class GoodsTypesSerializer(serializers.HyperlinkedModelSerializer):
    """
    声明查询的表和返回的字段
    """
    class Meta:
        model = GoodsTypes  # 要进行接口序列化的模型
        fields = ["typeName", "typeDescription"]
2、创建视图

在视图当中查询接口要返回的数据,并制定过滤器

from rest_framework import viewsets
from ShopAPP.serializers import *

class GoodsViewSet(viewsets.ModelViewSet):
    """
    返回具体查询的数据
     """
    queryset = Goods.objects.all()  # 具体返回的数据
    serializer_class = GoodsSerializer  # 指定过滤的类

class GoodsTypseViewSet(viewsets.ModelViewSet):
    """
    返回具体查询的数据
    """
    queryset = GoodsTypes.objects.all()
    serializer_class = GoodsTypesSerializer
3、编写路由
from ShopAPP.views import GoodsViewSet, GoodsTypseViewSet

# 声明一个默认的路由注册器
router = routers.DefaultRouter()
# 注册写好的接口视图
router.register(r"goods", GoodsViewSet)
router.register(r"goodsTypes", GoodsTypseViewSet)

django:通过Django REST framework实现RESTful API_第3张图片

3 访问

访问方式就是在浏览器地址栏输入http://127.0.0.1:8000/API

4 自定义接口返回内容

1、在项目的根目录创建utils包用来存放要编写的renderer文件,文件的命名注意命名规范即可

在这里插入图片描述

2、编写
from rest_framework.renderers import JSONRenderer

class customrenderer(JSONRenderer):
    def render(self, data, accepted_media_type=None, renderer_context=None):
        """
        :param data: 返回的数据
        :param accepted_media_type: 接收的类型
        :param renderer_context: 呈现的内容
        """
        if renderer_context:  # 如果有请求的数据过来
            if isinstance(data, dict):
                msg = data.pop("msg", "请求成功")
                code = data.pop("code", 0)
            else:
                msg = "请求成功"
                code = 0
            ret = {  # 重新构建返回数据格式
                # 前三项都是要添加的数据
                "msg":msg,
                "code":code,
                "author":"wwl",
                "data":data  # 原本的数据
            }
            return super().render(ret, accepted_media_type,renderer_context)
        else:
            return super().render(data, accepted_media_type, renderer_context)
3、安装renderer文件

注意字母不要写错,逗号不要忘写
django:通过Django REST framework实现RESTful API_第4张图片

4、访问

访问的时候谷歌浏览器可能会出现下面的情况
在这里插入图片描述
可以换成别的浏览器或者在谷歌浏览器安装插件或者使用postman软件,这里我是用的就是postman
django:通过Django REST framework实现RESTful API_第5张图片
可以看到出现了自定义的内容

5 接口传参

1、安装django-filter模块,
 pip install django-filter 
2、settings配置

django:通过Django REST framework实现RESTful API_第6张图片

3、在视图中使用过滤器

django:通过Django REST framework实现RESTful API_第7张图片

4、访问

get方式访问,后面加参数
django:通过Django REST framework实现RESTful API_第8张图片

你可能感兴趣的:(Django)