前面我们写过对客户信息进行增删查改,这里对商品进行增删查改也是一样的。
一、新建commodity.py放在mgr文件夹下
编写商品增删查改的代码
from django.http import JsonResponse
import json
from common.models import Commodity
def dispatcher(request):
# 根据session判断用户是否是登录的管理员用户
if 'usertype' not in request.session:
return JsonResponse({
'ret': 302,
'msg': '未登录',
'redirect': '/mgr/sign.html'},
status=302)
if request.session['usertype'] != 'mgr':
return JsonResponse({
'ret': 302,
'msg': '用户非mgr类型',
'redirect': '/mgr/sign.html'},
status=302)
# 将请求参数统一放入request 的 params 属性中,方便后续处理
# GET请求 参数在url中,通过request 对象的 GET属性获取
if request.method == 'GET':
request.params = request.GET
# POST/PUT/DELETE 请求 参数 从 request 对象的 body 属性中获取
elif request.method in ['POST','PUT','DELETE']:
# 根据接口,POST/PUT/DELETE 请求的消息体都是 json格式
request.params = json.loads(request.body)
# 根据不同的action分派给不同的函数进行处理
action = request.params['action']
if action == 'list_commodity':
return listcommodity(request)
elif action == 'add_commodity':
return addcommodity(request)
elif action == 'modify_commodity':
return modifycommodity(request)
elif action == 'del_commodity':
return deletecommodity(request)
else:
return JsonResponse({'ret': 1, 'msg': '不支持该类型http请求'})
#查询
def listcommodity(request):
# 返回一个 QuerySet 对象 ,包含所有的表记录
qs = Commodity.objects.values()
# 将 QuerySet 对象 转化为 list 类型
# 否则不能 被 转化为 JSON 字符串
retlist = list(qs)
return JsonResponse({'ret': 0, 'retlist': retlist})
#增加
def addcommodity(request):
info = request.params['data']
# 从请求消息中 获取要添加客户的信息
# 并且插入到数据库中
# 返回值 就是对应插入记录的对象
commodity = Commodity.objects.create(name=info['name'] ,
sn=info['sn'] ,
desc=info['desc'])
return JsonResponse({'ret': 0, 'id':commodity.id})
#修改
def modifycommodity(request):
commodityid = request.params['id'] # 从请求消息中 获取修改客户的信息
newdata = request.params['newdata'] # 找到该客户,并且进行修改操作
try:# 根据 id 从数据库中找到相应的客户记录
commodity = Commodity.objects.get(id=commodityid)
except Commodity.DoesNotExist:
return {
'ret': 1,
'msg': f'id 为`{commodityid}`的客户不存在'
}
if 'name' in newdata:
commodity.name = newdata['name']
if 'sn' in newdata:
commodity.sn = newdata['sn']
if 'desc' in newdata:
commodity.desc = newdata['desc']
commodity.save() # 注意,一定要执行save才能将修改信息保存到数据库
return JsonResponse({'ret': 0})
#删除
def deletecommodity(request):
commodityid = request.params['id']
try:
# 根据 id 从数据库中找到相应的客户记录
commodity = Commodity.objects.get(id=commodityid)
except Commodity.DoesNotExist:
return {
'ret': 1,
'msg': f'id 为`{commodityid}`的客户不存在'
}
# delete 方法就将该记录从数据库中删除了
commodity.delete()
return JsonResponse({'ret': 0})
二、设置路由信息
浏览器的请求由路由器分配以上得函数进行处理返回所需要的结果
打开urls.py
urlpatterns = [
path('customers', customer.dispatcher),
path('commodity', commodity.dispatcher),
path('signin', sign.signin),
path('signout', sign.signout),
]