【超详细Django网站开发过程14】便利店管理系统之——对商品库进行增删查改

前面我们写过对客户信息进行增删查改,这里对商品进行增删查改也是一样的。
一、新建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),
]

猜你喜欢

转载自blog.csdn.net/yljwhat/article/details/107940446