文章目录
拿商品类视图举例
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))