django中实现restful API的编写

13 篇文章 4 订阅
3 篇文章 0 订阅

django中编写resetful API可以使用django-rest-framework,django-rest-framework的安装很简单:

pip install djangorestframework
pip install markdown
pip install django-filter

安装完成之后需要在settings中配置一下
在这里插入图片描述
rest_framework中有许多现成的组件可以使我们更方便的编写API:

  1. 认证相关的组件Authentication
  2. 权限相关的组件Permissions
  3. 限流相关的组件Throttling,此组件可以对接口访问的次数进行限制,以减轻服务器的压力。
  4. 过滤相关的组件Filtering,此组件必须安装django-filter ,需要注册app,可以实现查询过滤的功能。
  5. 序列化相关的组件Serializers,可以实现序列化以及反序列化。
  6. 分页相关的组件Pagination
  7. 异常处理相关的组件Exceptions
    这些组件的使用都需要配置,配置主要有两种方式:全区配置和局部配置,像序列化、过滤、分页、异常处理等组件在视图中配置就可以了,也就是局部配置。其他组件及可以在视图中配置,也可以在settings中配置,以认证组件为例:
    全局配置(seeting.py)
    在这里插入图片描述
    局部配置(views.py)
    在这里插入图片描述
    配置完成之后我们就可以愉快的写API了,以序列化接口为例。
    首先要导入相关模块:
from rest_framework import serializers # 导入序列化模块
from rest_framework.views import APIView,Response
from Store.models import Goods # 导入相关models模块

序列化的使用类似django中的form组件的使用,可以对用户请求的数据进行验证以及序列化,序列化即将对象的状态信息转化成可以储存或传输的字符串形式,反序列化即将字符串转化为对象。我们可以使用Serializer自定义序列化的字段,也可以使用ModelSerializer继承数据库里的字段进行序列化。
自定义序列化:

class GoodsSerializers(serializers.Serializer):
    goods_name = serializers.CharField(max_length=32)
    goods_price = serializers.FloatField()
    goods_number = serializers.IntegerField()
    goods_description = serializers.CharField(max_length=100)

class Goodss(APIView):
    def get(self,req):
        goods = Goods.objects.all()
        serializer = GoodsSerializers(goods,many=True) # many=True序列化queryset以及model
        return Response(serializer.data)

结果如下:
在这里插入图片描述
同样我们也可以使用ModelSerializer继承数据库字段进行序列化:

class GoodsSerializers(serializers.ModelSerializer):
    class Meta:
        model = Goods
        fields = ("goods_name","goods_price","goods_number","goods_description")

class Goodss(APIView):
    def get(self,req):
        goods = Goods.objects.all()
        serializer = GoodsSerializers(goods,many=True)
        return Response(serializer.data)

得到的结果和自定义的相同。
以上就是关于django中restfull API编写的基础介绍,有时间在对这些组件进行详细的介绍。
具体序列化操作可参考:https://blog.csdn.net/zhangmengran/article/details/84887206

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值