【Django】第三课 基于Django超市订单管理系统开发

概念

本文在上一文之上,针对管理员,经理,普通员工身份的用户操作供应商管理模块功能。

功能实现

供应商管理模块属于业务功能,这里管理员不具备操作权限,而经理具备与供应商之间谈合作的实际需要,因此经理具备对供应商的添加,修改,删除和查询,普通员工只能根据需要查询供应商信息,而不具备对供应商信息更改,删除和添加的权限。

管理员操作供应商管理模块

当管理员点击供应商管理模块时,超出管理员的权限范围,因此弹出提示对话框提示管理员该功能不在其权限范围内

【Django】第三课 基于Django超市订单管理系统开发

普通员工操作供应商管理模块

普通员工因业务需要,可以查看与超市有合作关系的所有供应商信息。给服务器发送地址请求 /gysgl/?type=3 ,服务器中需要接收该请求和其type参数

urls.py

 # 接收不同身份的用户操作供应商管理的功能地址
    path('gysgl/',views.gysgl),

views.py

创建方法,根据当前登录的用户的身份,分配所操作的功能
def gysgl(request):
    # 接收当前登录的用户的身份
    type=request.GET["type"]
    # 先从数据库的供应商表中把所有供应商信息查询出来
    pList=Provider.objects.all().values()
    if type == "3":
        # 说明当前登录的用户是普通员工,只能查看供应商信息
        return render(request,"pProviderList.html",{"pList":pList,"user":user[0]})
    elif type == "2":
        # 说明当前登录的用户是经理,经理可以具备查看供应商,
        # 修改供应商,添加供应商,删除供应商的权利
        return render(request, "jProviderList.html", {"pList": pList, "user": user[0]})

当普通员工操作该功能时,服务器需要从数据库中将所有供应商信息查询出来,显示在html页面上

其html代码如下


超市订单管理系统--供应商列表

                     返回首页

                欢迎,{{user.userName}}
                  注销 

            超市订单管理系统

                    主键Id
                    供应商编码
                    供应商名称
                    供应商详细描述
                    供应商联系人
                    联系电话
                    地址
                    传真

                {% for foo in pList %}

                    {{ foo.id }}
                    {{ foo.proCode }}
                    {{ foo.proName }}
                    {{ foo.proDesc }}

                    {{ foo.proContact }}
                    {{ foo.proPhone }}
                    {{ foo.proAddress }}
                    {{ foo.proFax }}

                {% endfor %}

其界面效果如下

【Django】第三课 基于Django超市订单管理系统开发

经理操作供应商管理模块

经理的工作就是需要和各种符合超市要求的供应商进行签订合作,取消合作以及修改合作信息等等,因此经理具备操作供应商管理模块的添加,修改,删除和查询权限。当经理点击供应商管理模块时,发送地址请求 /gysgl/?type=2,服务器定义地址接收请求

【Django】第三课 基于Django超市订单管理系统开发

这时需要将信息发送给 jProviderList.html页面


超市订单管理系统--供应商列表

                     返回首页

                欢迎,{{user.userName}}
                  注销 

            超市订单管理系统

                添加供应商

                    主键Id
                    供应商编码
                    供应商名称
                    供应商详细描述
                    供应商联系人
                    联系电话
                    地址
                    传真
                    操作

                {% for foo in pList %}

                    {{ foo.id }}
                    {{ foo.proCode }}
                    {{ foo.proName }}
                    {{ foo.proDesc }}

                    {{ foo.proContact }}
                    {{ foo.proPhone }}
                    {{ foo.proAddress }}
                    {{ foo.proFax }}

                {% endfor %}

其界面效果图如下

【Django】第三课 基于Django超市订单管理系统开发

经理需要添加新的供应商时,点击添加供应商超链接,进入添加供应商页面

接收经理点击添加供应商跳转页面的地址
    path('addProvider/',views.addProvider),
创建方法,跳转打开添加供应商的html页面
def addProvider(request):
    return render(request,"addProvider.html",{"user":user[0]})

其添加供应商页面代码如下


超市订单管理系统--添加供应商

                     返回首页

                欢迎,{{user.userName}}
                  注销 

            超市订单管理系统

                {% csrf_token %}

                供应商编码: 

                供应商名称: 

                供应商详细描述:

                供应商联系人: 

                联系电话: 

                地址: 

                传真: 

其界面效果图如下

【Django】第三课 基于Django超市订单管理系统开发

当经理输入新供应商信息之后,将数据发送给服务器

接收经理添加新的供应商的数据地址
    path('toAddProvider/',views.toAddProvider),
创建方法,接收新供应商信息
def toAddProvider(request):
    # 供应商编号
    proCode=request.POST["proCode"]
    # 供应商名称
    proName=request.POST["proName"]
    # 供应商主营业务
    proDesc=request.POST["proDesc"]
    # 供应商联系人
    proContact=request.POST["proContact"]
    # 联系人电话
    proPhone=request.POST["proPhone"]
    # 供应商地址
    proAddress=request.POST["proAddress"]
    # 传真
    proFax=request.POST["proFax"]
    # 获得当前登录系统的经理的id
    createdBy=user[0].id
    # 获得经理添加供应商的实时时间
    creationDate=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    # 不涉及修改功能,修改的经理的id默认为0
    modifyBy=0
    modifyDate=""
    # 将新供应商的数据信息添加至供应商表
    Provider.objects.create(proCode=proCode,proName=proName,proDesc=proDesc,
                            proContact=proContact,proPhone=proPhone,proAddress=proAddress,
                            proFax=proFax,createdBy=createdBy,creationDate=creationDate,
                            modifyBy=modifyBy,modifyDate=modifyDate)
    return HttpResponseRedirect("/gysgl/?type=2")

数据如果添加成功,则刷新供应商列表页面

当经理修改供应商信息需要将该供应商信息主键id发送给服务器

接收经理需要修改的供应商id的地址
    path('getProvider/',views.getProvider),
创建方法,根据经理要修改的供应商id查询供应商表,将该供应商信息显示在修改页面上
def getProvider(request):
    id=request.GET["id"]
    # 通过供应商id查询该供应商的完整信息
    provider=Provider.objects.get(id=id)
    return render(request,"updateProvider.html",{"provider":provider,"user":user[0]})

修改供应商页面html代码如下


超市订单管理系统--修改供应商

                     返回首页

                欢迎,{{user.userName}}
                  注销 

            超市订单管理系统

                {% csrf_token %}

                供应商编码: 

                供应商名称: 

                供应商详细描述:
                {{ provider.proDesc }}

                供应商联系人: 

                联系电话: 

                地址: 

                传真: 

其界面效果如下

【Django】第三课 基于Django超市订单管理系统开发

当经理更新供应商信息后,将数据发送给服务器

接收经理更新供应商的所有信息的地址
    path('updateProvider/',views.updateProvider),
创建方法,接收更新的供应商信息
def updateProvider(request):
    # 主键id
    id=request.POST["id"]
    # 供应商编号
    proCode = request.POST["proCode"]
    # 供应商名称
    proName = request.POST["proName"]
    # 供应商主营业务
    proDesc = request.POST["proDesc"]
    # 供应商联系人
    proContact = request.POST["proContact"]
    # 联系人电话
    proPhone = request.POST["proPhone"]
    # 供应商地址
    proAddress = request.POST["proAddress"]
    # 传真
    proFax = request.POST["proFax"]
    # 标注哪个经理修改了这个供应商信息
    modifyBy=user[0].id
    # 获得修改供应商的实时时间
    modifyDate=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    # 根据供应商id从数据库中查询出旧供应商数据
    provider=Provider.objects.filter(id=id)
    # 将新数据替换旧数据
    provider.update(proCode=proCode,proName=proName,proDesc=proDesc,
                            proContact=proContact,proPhone=proPhone,proAddress=proAddress,
                            proFax=proFax,modifyBy=modifyBy,modifyDate=modifyDate)
    return HttpResponseRedirect("/gysgl/?type=2")

数据修改成功后,刷新供应商列表页面

经理还可以删除无效的供应商

接收经理删除指定供应商的地址
    path('deleteProvider/',views.deleteProvider),
创建方法,根据供应商id从数据库中删除指定的供应商信息
def deleteProvider(request):
    id=request.GET["id"]
    # 根据id查询出要删除的供应商信息
    provider=Provider.objects.filter(id=id)
    # 将该供应商删除
    provider.delete()
    # 刷新列表页面
    return HttpResponseRedirect("/gysgl/?type=2")

删除后刷新列表页面

Original: https://blog.csdn.net/u010321564/article/details/128428594
Author: 笔触狂放
Title: 【Django】第三课 基于Django超市订单管理系统开发

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/788336/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球