django第三课基于django超市订单管理系统开发(代码片段)

笔触狂放 笔触狂放     2022-12-26     785

关键词:

概念

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

功能实现

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

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

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

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

普通员工因业务需要,可以查看与超市有合作关系的所有供应商信息。给服务器发送地址请求  /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代码如下

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>超市订单管理系统--供应商列表</title>
</head>
<body>
	<div style="width: 1680px;height: 1000px;margin: auto;">
		<div style="width: 100%;height: 160px;background-color:skyblue;">
			<div  style="width: 100%;height: 20px;">

				<div align="left" style="width: 20%;height: 100%;float: left;" >
					&nbsp;<a href="/login/?username= user.userName &password= user.userPassword " style="text-decoration: none;">返回首页</a>
				</div>

			<div align="right" style="width: 80%;height: 100%;float: right;">
				<a>欢迎,<span style="color: red;">user.userName</span></a>
				&nbsp;&nbsp;<a href="/" style="text-decoration: none;">注销</a>&nbsp;
			</div>

			</div>
			<div align="center" style="width: 100%;height: 140px;line-height: 140px;"><h1>超市订单管理系统</h1></div>
		</div>
		<div align="center" style="width: 100%;height: 840px;background-color: pink;overflow: scroll;">
			<table border="1" style="width: 90%;text-align: center;height: 800px;border-collapse: collapse;">
				<tr>
					<td>主键Id</td>
					<td>供应商编码</td>
					<td>供应商名称</td>
					<td>供应商详细描述</td>
					<td>供应商联系人</td>
					<td>联系电话</td>
					<td>地址</td>
					<td>传真</td>
				</tr>
				% for foo in pList %
				    <tr>
					<td > foo.id </td>
					<td> foo.proCode </td>
					<td> foo.proName </td>
					<td ><p style="text-overflow: ellipsis;
					overflow: hidden;white-space: nowrap;
					width: 260px;"> foo.proDesc </p>
					</td>
					<td> foo.proContact </td>
					<td> foo.proPhone </td>
					<td> foo.proAddress </td>
					<td> foo.proFax </td>
				</tr>
				% endfor %


			</table>

		</div>
	</div>
</body>
</html>

其界面效果如下

经理操作供应商管理模块

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

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

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>超市订单管理系统--供应商列表</title>
</head>
<body>
	<div style="width: 1680px;height: 1000px;margin: auto;">
		<div style="width: 100%;height: 160px;background-color:skyblue;">
			<div  style="width: 100%;height: 20px;">

				<div align="left" style="width: 20%;height: 100%;float: left;" >
					&nbsp;<a href="/login/?username= user.userName &password= user.userPassword " style="text-decoration: none;">返回首页</a>
				</div>

			<div align="right" style="width: 80%;height: 100%;float: right;">
				<a>欢迎,<span style="color: red;">user.userName</span></a>
				&nbsp;&nbsp;<a href="/" style="text-decoration: none;">注销</a>&nbsp;
			</div>

			</div>
			<div align="center" style="width: 100%;height: 140px;line-height: 140px;"><h1>超市订单管理系统</h1></div>
		</div>
		<div align="center" style="width: 100%;height: 840px;background-color: pink;overflow: scroll;">
			<div align="left" style="height: 40px;" >
				<a href="/addProvider/" style="text-decoration: none;
				 text-align:center;  width: 50px;
				 height: 20px;
				 color: white;font-weight: bold;
				 margin-top:20px;margin-left:10px;
				 border-radius: 5px;">添加供应商</a>
			</div>
			<table border="1" style="width: 90%;text-align: center;height: 800px;border-collapse: collapse;">
				<tr>
					<td>主键Id</td>
					<td>供应商编码</td>
					<td>供应商名称</td>
					<td>供应商详细描述</td>
					<td>供应商联系人</td>
					<td>联系电话</td>
					<td>地址</td>
					<td>传真</td>
					<td>操作</td>
				</tr>

                % for foo in pList %
				    <tr>
					<td > foo.id </td>
					<td> foo.proCode </td>
					<td> foo.proName </td>
					<td ><p style="text-overflow: ellipsis;
					overflow: hidden;white-space: nowrap;
					width: 260px;"> foo.proDesc </p>
					</td>
					<td> foo.proContact </td>
					<td> foo.proPhone </td>
					<td> foo.proAddress </td>
					<td> foo.proFax </td>
                    <td>
					<a href="/getProvider/?id= foo.id "><input type="button" value="修改" style="background-color: green;border: none;border-radius: 5px;color: white;"></a>
					<a href="/deleteProvider/?id= foo.id "><input type="button" value="删除" style="background-color: red;border: none;border-radius: 5px;color: white;"></a>
					</td>
				</tr>
				% endfor %
			</table>

		</div>
	</div>
</body>
</html>

 其界面效果图如下

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

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

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

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>超市订单管理系统--添加供应商</title>
</head>
<body>
	<div style="width: 1200px;height: 800px;margin: auto;">
		<div style="width: 100%;height: 160px;background-color:skyblue;">
			<div  style="width: 100%;height: 20px;">

				<div align="left" style="width: 20%;height: 100%;float: left;" >
					&nbsp;<a href="/login/?username= user.userName &password= user.userPassword " style="text-decoration: none;">返回首页</a>
				</div>

			<div align="right" style="width: 80%;height: 100%;float: right;">
				<a>欢迎,<span style="color: red;">user.userName</span></a>
				&nbsp;&nbsp;<a href="/" style="text-decoration: none;">注销</a>&nbsp;
			</div>

			</div>
			<div align="center" style="width: 100%;height: 140px;line-height: 140px;"><h1>超市订单管理系统</h1></div>
		</div>
		<div align="center" style="width: 100%;height: 640px;background-color: pink;">
			<form action="/toAddProvider/" method="post">
                % csrf_token %
				<div style="padding: 5px 0px">
				<label for="proCode">供应商编码:</label>&nbsp;
				<input id="proCode" name="proCode" type="text" placeholder="请输入供应商编码" />
				</div>
				<div style="padding: 5px 0px">
				<label for="proName">供应商名称:</label>&nbsp;
				<input id="proName" name="proName" type="text" placeholder="请输入供应商名称" />
				</div>
				<div style="padding: 5px 0px">
				<label >供应商详细描述:</label><br/>
				<textarea rows="5" cols="40" name="proDesc" placeholder="请输入主营产品内容"></textarea>
				</div>
				<div style="padding: 5px 0px">
				<label >供应商联系人:</label>&nbsp;
				<input type="text" name="proContact" placeholder="请输入联系人姓名">
				</div>
				<div style="padding: 5px 0px">
				<label >联系电话:</label>&nbsp;
				<input type="number" name="proPhone" placeholder="请输入手机号" >
				</div>
				<div style="padding: 5px 0px">
				<label >地址:</label>&nbsp;
				<input type="text" name="proAddress" placeholder="请输入地址" >
				</div>
				<div style="padding: 5px 0px">
				<label >传真:</label>&nbsp;
				<input type="text" name="proFax" placeholder="请输入传真号码" >
				</div>
				<div style="padding: 5px 0px">
					<input type="submit"
					  value="添加"
					 style="width: 120px;background-color: green;
					 border: none;padding: 5px;border-radius: 5px;
					 color: white;"/>
				</div>
			</form>


		</div>
	</div>
</body>
</html>

其界面效果图如下

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

# 接收经理添加新的供应商的数据地址
    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代码如下

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>超市订单管理系统--修改供应商</title>
</head>
<body>
	<div style="width: 1200px;height: 800px;margin: auto;">
		<div style="width: 100%;height: 160px;background-color:skyblue;">
			<div  style="width: 100%;height: 20px;">

				<div align="left" style="width: 20%;height: 100%;float: left;" >
					&nbsp;<a href="/login/?username= user.userName &password= user.userPassword " style="text-decoration: none;">返回首页</a>
				</div>

			<div align="right" style="width: 80%;height: 100%;float: right;">
				<a>欢迎,<span style="color: red;">user.userName</span></a>
				&nbsp;&nbsp;<a href="/" style="text-decoration: none;">注销</a>&nbsp;
			</div>

			</div>
			<div align="center" style="width: 100%;height: 140px;line-height: 140px;"><h1>超市订单管理系统</h1></div>
		</div>
		<div align="center" style="width: 100%;height: 640px;background-color: pink;">
			<form action="/updateProvider/" method="post">
                % csrf_token %
				<!-- 完成修改功能的时候,需要将主键id隐藏存储在表单页面上
					因为在完成修改的sql语句的同时,是需要条件,只有主键id是不允许被修改的,
					那么能作为条件去修改数据库表中的数据只有主键id
				 -->
				<input type="hidden" name="id" value=" provider.id ">
				<div style="padding: 5px 0px">
				<label for="proCode">供应商编码:</label>&nbsp;
				<input id="proCode" name="proCode" value=" provider.proCode " type="text" placeholder="请输入供应商编码" />
				</div>
				<div style="padding: 5px 0px">
				<label for="proName">供应商名称:</label>&nbsp;
				<input id="proName" name="proName" value=" provider.proName " type="text" placeholder="请输入供应商名称" />
				</div>
				<div style="padding: 5px 0px">
				<label >供应商详细描述:</label><br/>
				<textarea rows="5" cols="40" name="proDesc"  placeholder="请输入主营产品内容"> provider.proDesc </textarea>
				</div>
				<div style="padding: 5px 0px">
				<label >供应商联系人:</label>&nbsp;
				<input type="text" name="proContact" value=" provider.proContact " placeholder="请输入联系人姓名">
				</div>
				<div style="padding: 5px 0px">
				<label >联系电话:</label>&nbsp;
				<input type="number" name="proPhone" value=" provider.proPhone " placeholder="请输入手机号" >
				</div>
				<div style="padding: 5px 0px">
				<label >地址:</label>&nbsp;
				<input type="text" name="proAddress" value=" provider.proAddress " placeholder="请输入地址" >
				</div>
				<div style="padding: 5px 0px">
				<label >传真:</label>&nbsp;
				<input type="text" name="proFax" value=" provider.proFax " placeholder="请输入传真号码" >
				</div>
				<div style="padding: 5px 0px">
					<input type="submit"
					  value="修改供应商信息"
					 style="background-color: green;
					 border: none;padding: 5px;border-radius: 5px;
					 color: white;"/>
				</div>
			</form>


		</div>
	</div>
</body>
</html>

其界面效果如下

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

# 接收经理更新供应商的所有信息的地址
    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")

删除后刷新列表页面

django第四课基于django超市订单管理系统开发(代码片段)

概念本文在上一文之上,针对管理员,经理,普通员工身份的用户操作订单管理模块功能。功能实现该功能也是业务功能模块,管理员不具备操作权限,普通员工需要对超市所合作的供应商进行进货,因此... 查看详情

django第一课基于django超市订单管理系统开发(代码片段)

概念django服务器开发框架是一款基于Python编程语言用于web服务器开发的框架,采用的是MTV架构模式进行分层架构。项目搭建打开pycharm开发软件,打开开发软件的内置dos窗口操作命令行在这里指定项目存放的磁盘路径,... 查看详情

django第三课基于django图书借阅管理网站平台(代码片段)

概念本文在上一篇文章之上,完成借阅图书功能,查看借阅记录功能,归还图书,查看历史借阅记录,删除历史借阅记录等等借阅图书功能实现当前学生查阅图书的时候,如果当前学生没有借阅过该书࿰... 查看详情

django第二课基于django超市订单管理系统开发(代码片段)

概念本文在上一文之上,针对管理员,经理,普通员工身份的用户操作用户管理模块功能。功能实现1.普通员工登录系统后,对于用户管理模块不具备操作其他用户信息的权限。因此当普通员工登录后,弹出对... 查看详情

django第四课基于django超市订单管理系统开发(代码片段)

概念本文在上一文之上,针对管理员,经理,普通员工身份的用户操作订单管理模块功能。功能实现该功能也是业务功能模块,管理员不具备操作权限,普通员工需要对超市所合作的供应商进行进货,因此... 查看详情

django第一课基于django超市订单管理系统开发(代码片段)

概念django服务器开发框架是一款基于Python编程语言用于web服务器开发的框架,采用的是MTV架构模式进行分层架构。项目搭建打开pycharm开发软件,打开开发软件的内置dos窗口操作命令行在这里指定项目存放的磁盘路径,... 查看详情

django第三课基于django图书借阅管理网站平台(代码片段)

概念本文在上一篇文章之上,完成借阅图书功能,查看借阅记录功能,归还图书,查看历史借阅记录,删除历史借阅记录等等借阅图书功能实现当前学生查阅图书的时候,如果当前学生没有借阅过该书࿰... 查看详情

django第三课模板(代码片段)

...多的模板系统。其中最知名最好用的就是DTL和Jinja2。DTL是DjangoTemlateLanguage三个单词的缩写。也就是Django自带的模板语言。当然也可以配置Django支持Jinja2等其他模板引擎,但是作为 查看详情

django第三课银行账户管理系统开发(代码片段)

概念本文基于第二篇文章基础之上完成修改功能修改功能的完成在列表展示页面点击任意一个账户进行修改,则将该账户的id发送给服务器,服务器将根据该id查询数据库,将要修改的数据发送给修改页面上进行显示 ... 查看详情

django第三课银行账户管理系统开发(代码片段)

概念本文基于第二篇文章基础之上完成修改功能修改功能的完成在列表展示页面点击任意一个账户进行修改,则将该账户的id发送给服务器,服务器将根据该id查询数据库,将要修改的数据发送给修改页面上进行显示 ... 查看详情

django第三课模板变量及过滤器(代码片段)

...顺序,-会首先查找TEMPLATES里面的DIRSTEMPLATES=[‘BACKEND‘:‘django.template.backends.django.DjangoTemplates‘,‘DIRS‘:[os.path.join(BASE_DIR,‘templets‘)],‘APP_DIRS‘:True,‘OPTIONS‘:‘context_processors‘:[‘django.template.context_processors.debug‘,‘django.template... 查看详情

计算机毕业设计django基于python药房药品管理系统

...管理与现在网络相结合,利用Django技术建设药房药品管理系统,实现药品的信息化。则对于进一步提高订单信息管理发展,丰富订单信息管理经验能起到不少的促进作用。药房药品管理系统能够通过互联网得到广泛的... 查看详情

计算机毕业设计django基于python药房药品管理系统

...管理与现在网络相结合,利用Django技术建设药房药品管理系统,实现药品的信息化。则对于进一步提高订单信息管理发展,丰富订单信息管理经验能起到不少的促进作用。药房药品管理系统能够通过互联网得到广泛的... 查看详情

java+jsp基于ssm的校园oto超市系统

本网站主要是针对高校学生以超市购物为重点开发的网站。系统从用户上分为三种:卖家、买家和游客。系统从模块分为买家模块和卖家模块,买家模块包括用户注册登录、商品浏览、商品详情、商品加入购物车、购物... 查看详情

第三方模型的 Django 管理操作

】第三方模型的Django管理操作【英文标题】:Djangoadminactionforthirdpartymodel【发布时间】:2015-05-2720:13:34【问题描述】:如何向第三方应用的管理界面添加操作?示例:我想为模型django.contrib.admin.Group自定义操作。“操作”是指模... 查看详情

超级简单python基于django框架仓库管理系统设计与实现mysql数据库(项目源码+数据库)

1、项目介绍基于django框架的企业设备采购管理系统拥有三种角色:管理员、货主、采购主要实现功能有:货物大厅、我的订单、个人中心、货物管理、入库记录、出库记录、用户管理。2、项目技术后端框架:django前... 查看详情

django认证系统authentication(代码片段)

Django自带一个用户认证系统,用于处理用户账户、群组、许可和基于cookie的用户会话。Django的认证系统包含了身份验证和权限管理两部分。简单地说,身份验证用于核实某个用户是否合法,权限管理则是决定一个合法用户具有哪... 查看详情

django创建促销系统

创建应用(coupons)把应用添加到settings.py文件中创建数据模型创建优惠码表单forms.py添加到admin后台,方便控制运行命令pythonmanage.pymakemigrations和pythonmanage.pymigrate在订单模型中添加优惠码逻辑在订单系统模型中添加优惠逻辑在订... 查看详情