基于Django的接口开发

文章目录


拿商品类视图举例

from django.http import JsonResponse
from django.views import View
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
from Goods.models import Goods
@method_decorator(csrf_exempt,"dispatch") 
class GoodsApi(View):
    def__init__(self,**kwargs):
        super().__init__(**kwargs)
        selef.result = {
        "version":"1.0",
        "code":200,
        "data":[

            ]
        }
    def serialize(self,g)
        result = {"g_name":g.g_namem"g_price":g.gprice}
        return result
    def get(self,request,goods_id=0):
        """
        https://v1.UPython/api/goods/ 所有商品 
        https://v1.UPython/api/goods/1/ 指定商品 
        https://v1.UPython/api/goods/?page = 1
        """
        if goods_id:
            g = Goods.objects.filter(id = int(goods_id)).first()
            if g:
                self.result["data"].append(self.serialize(g))
            else:
                self.goodsDoesNotExit(goods_id)
        else:
            page = request.GET.get("page")
            if page:
                page = int(page) 
                start = (page-1)*10
                end = page*10
                g_list = Goods.objects.all()[start:end]
             else: 
                 g_list = Goods.objects.all()
             self.result["data"] = [ self.serialize(g) for g in g_list ]
        return JsonResponse(self.result)
    def post(self,request):
         request-data = request.POST
         g = Goods()
         g.g_name = request_data.get('g_name')
         g.g_price =request_data.get('g_price')
         try:
             g.save()
         except Exception as e:
             self.result['code'] = 500
             self.result['data'].append(str(e))
          else:
              self.result['data'].append(self.serialize(g))
           return JsonResponse(self.result)
    def put(self,request,good_id):
         g = Goods.objects.filter(id = good_id).first()
         if g:
             put = QueryDict(request.body)
             put_data = put[0]
             g.g_name = put_data.get("g_name") 
             g.g_price = put_data.get("g_price")
             try:
                 g.save()
             except Exception as e:
                 self.result['code'] = 500
                 self.result['data'].append(str(e))
              else:
                 self.result['data'].append(self.serialize(g))
                 return JsonResponse(self.result)
            else:
               self.goodsDoesNotExit(goods_id) 
            return JsonResponse(self.result)
    def goodsDoesNotExit(self,goods_id):
        self.result["code"] = 400
        self.result["data"].append("没有id为{}的数据".format(goods_id))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值