【超详细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),
]
好的,下面是一个简单的使用Django框架开发数据库管理程序示例,可以进行简单的数据增删查改管理。 首先,需要安装Django框架,可以使用pip命令进行安装: ``` pip install django ``` 然后,创建一个Django项目: ``` django-admin startproject db_management ``` 接着,在项目的根目录下创建一个名为“myapp”的Django应用: ``` cd db_management python manage.py startapp myapp ``` 在myapp目录下创建一个名为“models.py”的文件,并定义一个模型类,以用于管理数据库表的数据: ```python from django.db import models class Person(models.Model): name = models.CharField(max_length=50) age = models.IntegerField() def __str__(self): return self.name ``` 在myapp目录下创建一个名为“views.py”的文件,定义视图函数,用于实现增删查改功能: ```python from django.shortcuts import render, redirect from .models import Person def index(request): persons = Person.objects.all() return render(request, 'index.html', {'persons': persons}) def add(request): if request.method == 'POST': name = request.POST['name'] age = request.POST['age'] Person.objects.create(name=name, age=age) return redirect('index') def delete(request, id): person = Person.objects.get(id=id) person.delete() return redirect('index') def edit(request, id): person = Person.objects.get(id=id) if request.method == 'POST': name = request.POST['name'] age = request.POST['age'] person.name = name person.age = age person.save() return redirect('index') return render(request, 'edit.html', {'person': person}) ``` 最后,在myapp目录下创建一个名为“urls.py”的文件,定义URL路由,将视图函数与URL进行绑定: ```python from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), path('add/', views.add, name='add'), path('delete/<int:id>/', views.delete, name='delete'), path('edit/<int:id>/', views.edit, name='edit'), ] ``` 接下来,在myapp目录下创建一个名为“templates”的目录,用于存放HTML模板文件。在templates目录下创建一个名为“index.html”的文件,用于展示所有人员的信息列表: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Person List</title> </head> <body> <h1>Person List</h1> <ul> {% for person in persons %} <li>{{ person.name }} ({{ person.age }}) <a href="{% url 'delete' person.id %}">Delete</a> <a href="{% url 'edit' person.id %}">Edit</a></li> {% endfor %} </ul> <hr> <h2>Add Person</h2> <form method="post" action="{% url 'add' %}"> {% csrf_token %} <label>Name:</label><br> <input type="text" name="name"><br> <label>Age:</label><br> <input type="number" name="age"><br> <br> <input type="submit" value="Submit"> </form> </body> </html> ``` 在templates目录下创建一个名为“edit.html”的文件,用于编辑人员信息: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Edit Person</title> </head> <body> <h1>Edit Person</h1> <form method="post" action="{% url 'edit' person.id %}"> {% csrf_token %} <label>Name:</label><br> <input type="text" name="name" value="{{ person.name }}"><br> <label>Age:</label><br> <input type="number" name="age" value="{{ person.age }}"><br> <br> <input type="submit" value="Submit"> </form> </body> </html> ``` 最后,在项目的根目录下的“settings.py”文件中,将myapp应用添加到INSTALLED_APPS中: ```python INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'myapp', ] ``` 现在,运行Django开发服务器: ``` python manage.py runserver ``` 访问http://127.0.0.1:8000/,即可看到人员信息列表。可以点击“Add Person”按钮添加新的人员信息,点击“Delete”按钮删除人员信息,点击“Edit”按钮编辑人员信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值