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

news2025/1/14 0:53:51

概念

django服务器开发框架是一款基于Python编程语言用于web服务器开发的框架,采用的是MTV架构模式进行分层架构。

项目搭建

打开pycharm开发软件,打开开发软件的内置dos窗口操作命令行

在这里指定项目存放的磁盘路径,并使用创建django项目的指令创建当前项目,这里项目中使用django-admin startproject SMBMSSystem 创建了一个项目名为 SMBMSSystem的django服务器项目。

当回车时,只要编辑窗口未显示报错信息,则说明当前项目创建成功,在选择pycharm开发软件的左上角file》open找到打开刚刚创建的项目进行加载出来即可。

加载显示当前项目后,再一次进入内置dos窗口,在当前项目中创建子项目,创建子项目的指令如下:python manage.py startapp SMBMS,执行以上指令,则在当前项目中创建了 SMBMS子项目

将当前子项目名称添加至主项目的setting.py文件中进行管理

在 SMBMS中创建templates文件夹目录,用于存放创建的html模板页面

首页

在templates文件夹中new》html file,定义index.html作为当前子项目的首页,其代码如下

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>超市订单管理系统--登录</title>
<script type="text/javascript">
	function btn(obj,i) {
		//i为1的时候,表示鼠标在按钮上
		//i为2的时候,表示鼠标点击了按钮
		//i为3的时候,表示鼠标移出了按钮
		switch (i) {
		case 1:
			obj.style="width: 120px;background-color: red;border: none;padding: 5px;border-radius: 5px;color: white;";
			break;
		case 2:
			obj.style="width: 120px;background-color: skyblue;border: none;padding: 5px;border-radius: 5px;color: white;";
			break;
		case 3:
			obj.style="width: 120px;background-color: green;border: none;padding: 5px;border-radius: 5px;color: white;";
			break;
		}
	}
</script>
    <style type="text/css">
        table{
            width: 400px;
            border-radius: 5px;
            background-color: cadetblue;
        }
        td{
            padding: 10px;
        }
    </style>
</head>
<body>
	<div align="center" >
		<form action="login/"  method="get">
            {% csrf_token %}
			<table  style="margin: auto;text-align: center;">
                <tr>
                    <td colspan="2">
                        <h3>登录页面</h3>
                        <hr>
                    </td>
                </tr>
				<tr>
					<td>用户名:</td>
					<td><input type="text" name="username" placeholder="请输入用户名" /></td>
				</tr>
				<tr>
					<td>密码:</td>
					<td><input type="password" name="password" placeholder="请输入密码" /></td>
				</tr>
				<tr >
					<td colspan="2"><input type="submit"
					 onmouseover="btn(this,1)" onmouseout="btn(this,3)" onmousedown="btn(this,2)" value="登录"
					 style="width: 120px;background-color: green;
					 border: none;padding: 5px;border-radius: 5px;
					 color: white;"/></td>
				</tr>
			</table>
		</form>
	</div>
</body>
</html>

urls.py

# 进入登录页面的地址
    path('',views.index),

views.py

def index(request):
    return render(request,"index.html")

接着只需要通过内置dos窗口,编写运行django服务器指令即可,python manage.py runserver,运行服务器后,点击生成的django服务器地址即可

数据库表的创建和数据导入

在子项目的models.py文件中定义数据库表结构类

用户角色类

# 用户角色,用户身份
class Role(models.Model):
    # 工号
    roleCode=models.CharField(max_length=15,blank=True)
    # 角色名称
    roleName=models.CharField(max_length=15,blank=True)
    # 创建该数据的管理员的id
    createdBy = models.IntegerField(blank=True)
    # 创建该数据的时间
    creationDate = models.CharField(max_length=30, blank=True)
    # 修改该数据的管理员的id
    modifyBy = models.IntegerField(blank=True)
    # 修改该数据的时间
    modifyDate = models.CharField(max_length=30, blank=True)

用户类

# 创建用户表
class User(models.Model):
    # 用户编码
    userCode=models.CharField(max_length=15,blank=True)
    # 用户姓名
    userName=models.CharField(max_length=15,blank=True)
    #用户密码
    userPassword=models.CharField(max_length=15,blank=True)
    # 性别 1:女,2:男
    gender=models.IntegerField()
    # 出生日期
    birthday=models.CharField(max_length=15,blank=True)
    # 手机号
    phone=models.CharField(max_length=15,blank=True)
    # 地址
    address = models.CharField(max_length=30, blank=True)
    # 角色,身份id,取之于Role表
    userRole=models.IntegerField()
    # 创建该数据的管理员的id
    createdBy = models.IntegerField(blank=True)
    # 创建该数据的时间
    creationDate = models.CharField(max_length=30, blank=True)
    # 修改该数据的管理员的id
    modifyBy = models.IntegerField(blank=True)
    # 修改该数据的时间
    modifyDate = models.CharField(max_length=30, blank=True)

供应商类

# 供应商表
class Provider(models.Model):
    #供应商编码
    proCode=models.CharField(max_length=20, blank=True)
    # 供应商名称
    proName = models.CharField(max_length=20, blank=True)
    # 供应商详细描述
    proDesc = models.CharField(max_length=50, blank=True)
    # 供应商联系人
    proContact = models.CharField(max_length=20, blank=True)
    # 联系电话
    proPhone = models.CharField(max_length=20, blank=True)
    # 供应商地址
    proAddress = models.CharField(max_length=50, blank=True)
    # 传真
    proFax = models.CharField(max_length=20, blank=True)
    # 创建该数据的管理员的id
    createdBy = models.IntegerField(blank=True)
    # 创建该数据的时间
    creationDate = models.CharField(max_length=30, blank=True)
    # 修改该数据的管理员的id
    modifyBy = models.IntegerField(blank=True)
    # 修改该数据的时间
    modifyDate = models.CharField(max_length=30, blank=True)

 订单类

# 创建订单表
class Bill(models.Model):
    # 账单编码
    billCode=models.CharField(max_length=20,blank=True)
    # 商品名称
    productName = models.CharField(max_length=20, blank=True)
    # 商品描述
    productDesc = models.CharField(max_length=50, blank=True)
    # 商品单位
    productUnit = models.CharField(max_length=10, blank=True)
    # 商品数量
    productCount = models.FloatField(blank=True)
    # 商品总额
    totalPrice = models.FloatField(blank=True)
    # 是否支付(1:未支付 2:已支付)
    isPayment = models.IntegerField(blank=True)
    # 创建该数据的管理员的id
    createdBy = models.IntegerField(blank=True)
    # 创建该数据的时间
    creationDate = models.CharField(max_length=30, blank=True)
    # 修改该数据的管理员的id
    modifyBy = models.IntegerField(blank=True)
    # 修改该数据的时间
    modifyDate = models.CharField(max_length=30, blank=True)
    # 供应商ID
    providerId = models.IntegerField(blank=True)

紧急联系人类

# 建立紧急联系人地址表
class Address(models.Model):
    # 联系人姓名
    contact=models.CharField(max_length=15,blank=True)
    # 收货地址明细
    addressDesc=models.CharField(max_length=50,blank=True)
    # 邮政编码
    postCode=models.CharField(max_length=15,blank=True)
    # 联系人电话
    tel=models.CharField(max_length=20,blank=True)
    # 创建该数据的管理员的id
    createdBy=models.IntegerField(blank=True)
    # 创建该数据的时间
    creationDate=models.CharField(max_length=30,blank=True)
    # 修改该数据的管理员的id
    modifyBy=models.IntegerField(blank=True)
    # 修改该数据的时间
    modifyDate=models.CharField(max_length=30,blank=True)
    # 用户id
    userId=models.IntegerField()

 接着在内置dos窗口中输入python manage.py migrations指令将以上数据库模型类转换成迁移文件

然后输入python manage.py migrate指令将迁移文件转换成数据库对应的表结构

点击打开以上五张表,点击DDL进行执行批量添加数据信息

 

选中要添加的数据的sql语句,右键execute执行即可,执行结束后,刷新当前表结构,既能看到添加的数据,其他几张表以此类推

角色表数据

INSERT INTO `smbms_role` VALUES ('1', 'SMBMS_ADMIN', '系统管理员', '1', '2016-04-13 00:00:00', 0, '');
INSERT INTO `smbms_role` VALUES ('2', 'SMBMS_MANAGER', '经理', '1', '2016-04-13 00:00:00', 0, '');
INSERT INTO `smbms_role` VALUES ('3', 'SMBMS_EMPLOYEE', '普通员工', '1', '2016-04-13 00:00:00', 0, '');

 紧急联系人表数据

INSERT INTO `smbms_address` VALUES ('1', '王丽', '北京市东城区东交民巷44号', '100010', '13678789999', '1', '2016-04-13 00:00:00', '', '', '1');
INSERT INTO `smbms_address` VALUES ('2', '张红丽', '北京市海淀区丹棱街3号', '100000', '18567672312', '1', '2016-04-13 00:00:00', '', '', '1');
INSERT INTO `smbms_address` VALUES ('3', '任志强', '北京市东城区美术馆后街23号', '100021', '13387906742', '1', '2016-04-13 00:00:00', '', '', '1');
INSERT INTO `smbms_address` VALUES ('4', '曹颖', '北京市朝阳区朝阳门南大街14号', '100053', '13568902323', '1', '2016-04-13 00:00:00', '', '', '2');
INSERT INTO `smbms_address` VALUES ('5', '李慧', '北京市西城区三里河路南三巷3号', '100032', '18032356666', '1', '2016-04-13 00:00:00', '', '', '3');
INSERT INTO `smbms_address` VALUES ('6', '王国强', '北京市顺义区高丽营镇金马工业区18号', '100061', '13787882222', '1', '2016-04-13 00:00:00', '', '', '3');

用户表数据

INSERT INTO `smbms_user` VALUES ('1', 'admin', '系统管理员', '1234567', '1', '1983-10-10', '13688889999', '北京市海淀区成府路207号', '1', '1', '2013-03-21 16:52:07', 0, '');
INSERT INTO `smbms_user` VALUES ('2', 'liming', '李明', '0000000', '2', '1983-12-10', '13688884457', '北京市东城区前门东大街9号', '2', '1', '2022-04-22 16:10:36', 0, '');
INSERT INTO `smbms_user` VALUES ('5', 'hanlubiao', '韩路彪', '0000000', '2', '1984-06-05', '18567542321', '北京市朝阳区北辰中心12号', '2', '1', '2014-12-31 19:52:09', 0, '');
INSERT INTO `smbms_user` VALUES ('6', 'zhanghua', '张华', '0000000', '1', '1983-06-15', '13544561111', '北京市海淀区学院路61号', '3', '1', '2013-02-11 10:51:17', 0, '');
INSERT INTO `smbms_user` VALUES ('7', 'wangyang', '王洋', '0000000', '2', '1982-12-31', '13444561124', '北京市海淀区西二旗辉煌国际16层', '3', '1', '2014-06-11 19:09:07', 0, '');
INSERT INTO `smbms_user` VALUES ('8', 'zhaoyan', '赵燕', '0000000', '1', '1986-03-07', '18098764545', '北京市海淀区回龙观小区10号楼', '3', '1', '2016-04-21 13:54:07', 0, '');
INSERT INTO `smbms_user` VALUES ('10', 'sunlei', '孙磊', '0000000', '2', '1981-01-04', '13387676765', '北京市朝阳区管庄新月小区12楼', '3', '1', '2015-05-06 10:52:07', 0, '');
INSERT INTO `smbms_user` VALUES ('11', 'sunxing', '孙兴', '0000000', '2', '1978-03-12', '13367890900', '北京市朝阳区建国门南大街10号', '3', '1', '2016-11-09 16:51:17', 0, '');
INSERT INTO `smbms_user` VALUES ('12', 'zhangchen', '张小晨', '0000000', '1', '1986-04-16', '18098765434', '朝阳区管庄路口北柏林爱乐三期13号楼', '2', '1', '2016-08-09 05:52:37', '1', '2021-10-16 16:55:54');
INSERT INTO `smbms_user` VALUES ('13', 'dengchao', '邓超', '0000000', '2', '1981-11-04', '13689674534', '北京市海淀区北航家属院10号楼', '3', '1', '2016-07-11 08:02:47', 0, '');
INSERT INTO `smbms_user` VALUES ('14', 'yangguo', '杨过', '0000000', '2', '1980-01-01', '13388886623', '北京市朝阳区北苑家园茉莉园20号楼', '3', '1', '2015-02-01 03:52:07', 0, '');
INSERT INTO `smbms_user` VALUES ('15', 'zhaomin', '赵敏', '0000000', '1', '1987-12-04', '18099897657', '北京市昌平区天通苑3区12号楼', '2', '1', '2015-09-12 12:02:12', 0, '');
INSERT INTO `smbms_user` VALUES ('16', 'zhangsan', '张三', '0000000', '2', '2022-05-10', '12345678910', '江西省南昌市济技术开发区志敏1458号', '3', '1', '2022-05-07 09:45:16', 0, '');

 供应商表数据

INSERT INTO `smbms_provider` VALUES ('1', 'BJ_GYS001', '北京三木堂商贸有限公司', '长期合作伙伴,主营产品:茅台、五粮液、郎酒、酒鬼酒、泸州老窖、赖茅酒、法国红酒等', '张国强', '13566667777', '北京市丰台区育芳园北路', '010-58858787', '1', '2013-03-21 16:52:07', null, null);
INSERT INTO `smbms_provider` VALUES ('2', 'HB_GYS001', '石家庄帅益食品贸易有限公司', '长期合作伙伴,主营产品:饮料、水饮料、植物蛋白饮料、休闲食品、果汁饮料、功能饮料等', '王军', '13309094212', '河北省石家庄新华区', '0311-67738876', '1', '2016-04-13 04:20:40', null, null);
INSERT INTO `smbms_provider` VALUES ('3', 'GZ_GYS001', '深圳市泰香米业有限公司', '初次合作伙伴,主营产品:良记金轮米,龙轮香米等', '郑程瀚', '13402013312', '广东省深圳市福田区深南大道6006华丰大厦', '0755-67776212', '1', '2014-03-21 16:56:07', null, null);
INSERT INTO `smbms_provider` VALUES ('4', 'GZ_GYS002', '深圳市喜来客商贸有限公司', '长期合作伙伴,主营产品:坚果炒货.果脯蜜饯.天然花茶.营养豆豆.特色美食.进口食品.海味零食.肉脯肉', '林妮', '18599897645', '广东省深圳市福龙工业区B2栋3楼西', '0755-67772341', '1', '2013-03-22 16:52:07', null, null);
INSERT INTO `smbms_provider` VALUES ('5', 'JS_GYS001', '兴化佳美调味品厂', '长期合作伙伴,主营产品:天然香辛料、鸡精、复合调味料', '徐国洋', '13754444221', '江苏省兴化市林湖工业区', '0523-21299098', '1', '2015-11-22 16:52:07', null, null);
INSERT INTO `smbms_provider` VALUES ('6', 'BJ_GYS002', '北京纳福尔食用油有限公司', '长期合作伙伴,主营产品:山茶油、大豆油、花生油、橄榄油等', '马莺', '13422235678', '北京市朝阳区珠江帝景1号楼', '010-588634233', '1', '2012-03-21 17:52:07', null, null);
INSERT INTO `smbms_provider` VALUES ('7', 'BJ_GYS003', '北京国粮食用油有限公司', '初次合作伙伴,主营产品:花生油、大豆油、小磨油等', '王驰', '13344441135', '北京大兴青云店开发区', '010-588134111', '1', '2016-04-13 00:00:00', null, null);
INSERT INTO `smbms_provider` VALUES ('8', 'ZJ_GYS001', '慈溪市广和绿色食品厂', '长期合作伙伴,主营产品:豆瓣酱、黄豆酱、甜面酱,辣椒,大蒜等农产品', '薛圣丹', '18099953223', '浙江省宁波市慈溪周巷小安村', '0574-34449090', '1', '2013-11-21 06:02:07', null, null);
INSERT INTO `smbms_provider` VALUES ('9', 'GX_GYS001', '优百商贸有限公司', '长期合作伙伴,主营产品:日化产品', '李立国', '13323566543', '广西南宁市秀厢大道42-1号', '0771-98861134', '1', '2013-03-21 19:52:07', null, null);
INSERT INTO `smbms_provider` VALUES ('10', 'JS_GYS002', '南京火头军信息技术有限公司', '长期合作伙伴,主营产品:不锈钢厨具等', '陈女士', '13098992113', '江苏省南京市浦口区浦口大道1号新城总部大厦A座903室', '025-86223345', '1', '2013-03-25 16:52:07', null, null);
INSERT INTO `smbms_provider` VALUES ('11', 'GZ_GYS003', '广州市白云区美星五金制品厂', '长期合作伙伴,主营产品:海绵床垫、坐垫、靠垫、海绵枕头、头枕等', '梁天', '13562276775', '广州市白云区钟落潭镇福龙路20号', '020-85542231', '1', '2016-12-21 06:12:17', null, null);
INSERT INTO `smbms_provider` VALUES ('12', 'BJ_GYS004', '北京隆盛日化科技', '长期合作伙伴,主营产品:日化环保清洗剂,家居洗涤专卖、洗涤用品网、墙体除霉剂、墙面霉菌清除剂等', '孙欣', '13689865678', '北京市大兴区旧宫', '010-35576786', '1', '2014-11-21 12:51:11', null, null);
INSERT INTO `smbms_provider` VALUES ('13', 'SD_GYS001', '山东豪克华光联合发展有限公司', '长期合作伙伴,主营产品:洗衣皂、洗衣粉、洗衣液、洗洁精、消杀类、香皂等', '吴洪转', '13245468787', '山东济阳济北工业区仁和街21号', '0531-53362445', '1', '2015-01-28 10:52:07', null, null);
INSERT INTO `smbms_provider` VALUES ('14', 'JS_GYS003', '无锡喜源坤商行', '长期合作伙伴,主营产品:日化品批销', '周一清', '18567674532', '江苏无锡盛岸西路', '0510-32274422', '1', '2016-04-23 11:11:11', null, null);
INSERT INTO `smbms_provider` VALUES ('15', 'ZJ_GYS002', '乐摆日用品厂', '长期合作伙伴,主营产品:各种中、高档塑料杯,塑料乐扣水杯(密封杯)、保鲜杯(保鲜盒)、广告杯、礼品杯', '王世杰', '13212331567', '浙江省金华市义乌市义东路', '0579-34452321', '1', '2016-08-22 10:01:30', null, null);
INSERT INTO `smbms_provider` VALUES ('18', 'XJ_BYS002', '江西青年职业学院', '软件技术,计算机应用,电子商务', '王老师', '15266666666', '江西省南昌市西湖区', '0791-88888888', '2', '2021-10-19 20:24:17', '2022-05-02 15:52:23', '2');
INSERT INTO `smbms_provider` VALUES ('19', 'SZ_GYS001', '深圳华为有限公司', '主营业务:网络通信,人工智能,电脑,手机,制造芯片等等业务', '任正非', '15266666666', '广东省深圳市南山区', '0791-88888666', '2', '2022-04-27 09:42:29', '2022-04-27 10:57:03', '2');
INSERT INTO `smbms_provider` VALUES ('20', 'XJ_BYS003', '深圳腾讯股份有限公司', '开发各种游戏,即时通讯软件,QQ,微信等等', '马化腾', '18199999999', '广东省深圳市南山区', '0791-88888666', '2', '2022-05-02 14:52:31', null, null);
INSERT INTO `smbms_provider` VALUES ('21', 'XJ_BYS004', '杭州阿里巴巴集团', '支付宝,淘宝,菜鸟等等', '马老师', '15288888999', '浙江省杭州市西湖区', '0791-88888666', '2', '2022-05-03 14:49:08', '2022-05-03 15:52:32', '2');

订单表数据

INSERT INTO `smbms_bill` VALUES ('1', 'BILL2016_001', '洗发水、护发素', '日用品-洗发、护发', '瓶', '500.00', '25000.00', '1', '7', '2014-12-14 13:02:03', 0, '', '13');
INSERT INTO `smbms_bill` VALUES ('2', 'BILL2016_002', '香皂、肥皂、药皂', '日用品-皂类', '块', '1000.00', '10000.00', '2', '6', '2016-03-23 04:20:40', 0, '', '13');
INSERT INTO `smbms_bill` VALUES ('3', 'BILL2016_003', '大豆油', '食品-食用油', '斤', '300.00', '5890.00', '2', '8', '2014-12-14 13:02:03', 0, '', '6');
INSERT INTO `smbms_bill` VALUES ('4', 'BILL2016_004', '橄榄油', '食品-进口食用油', '斤', '200.00', '9800.00', '1', '10', '2013-10-10 03:12:13', 0, '', '7');
INSERT INTO `smbms_bill` VALUES ('5', 'BILL2016_005', '洗洁精', '日用品-厨房清洁', '瓶', '500.00', '7000.00', '1', '13', '2014-12-14 13:02:03', 0, '', '9');
INSERT INTO `smbms_bill` VALUES ('6', 'BILL2016_006', '美国大杏仁', '食品-坚果', '袋', '300.00', '5000.00', '1', '14', '2016-04-14 06:08:09', 0, '', '4');
INSERT INTO `smbms_bill` VALUES ('7', 'BILL2016_007', '沐浴液、精油', '日用品-沐浴类', '瓶', '500.00', '23000.00', '2', '8', '2016-07-22 10:10:22', 0, '', '14');
INSERT INTO `smbms_bill` VALUES ('8', 'BILL2016_008', '不锈钢盘碗', '日用品-厨房用具', '个', '600.00', '6000.00', '1', '7', '2016-04-14 05:12:13', 0, '', '14');
INSERT INTO `smbms_bill` VALUES ('9', 'BILL2016_009', '塑料杯', '日用品-杯子', '个', '350.00', '1750.00', '1', '6', '2016-02-04 11:40:20', 0, '', '14');
INSERT INTO `smbms_bill` VALUES ('10', 'BILL2016_010', '豆瓣酱', '食品-调料', '瓶', '200.00', '2000.00', '2', '6', '2013-10-29 05:07:03', 0, '', '8');
INSERT INTO `smbms_bill` VALUES ('11', 'BILL2016_011', '海之蓝', '饮料-国酒', '瓶', '50.00', '10000.00', '1', '11', '2016-04-14 16:16:00', 0, '', '1');
INSERT INTO `smbms_bill` VALUES ('12', 'BILL2016_012', '芝华士', '饮料-洋酒', '瓶', '20.00', '6000.00', '1', '13', '2016-09-09 17:00:00', 0, '', '1');
INSERT INTO `smbms_bill` VALUES ('13', 'BILL2016_013', '长城红葡萄酒', '饮料-红酒', '瓶', '60.00', '800.00', '1', '14', '2016-11-14 15:23:00', 0, '', '1');
INSERT INTO `smbms_bill` VALUES ('14', 'BILL2016_014', '泰国香米', '食品-大米', '斤', '400.00', '5000.00', '1', '13', '2016-10-09 15:20:00', 0, '', '3');
INSERT INTO `smbms_bill` VALUES ('15', 'BILL2016_015', '东北大米', '食品-大米', '斤', '600.00', '4000.00', '1', '11', '2016-11-14 14:00:00', 0, '', '3');
INSERT INTO `smbms_bill` VALUES ('16', 'BILL2016_016', '可口可乐', '饮料', '瓶', '2000.00', '6000.00', '1', '8', '2012-03-27 13:03:01', 0, '', '2');
INSERT INTO `smbms_bill` VALUES ('17', 'BILL2016_017', '脉动', '饮料', '瓶', '1500.00', '4500.00', '1', '7', '2016-05-10 12:00:00', 0, '', '2');
INSERT INTO `smbms_bill` VALUES ('18', 'BILL2016_018', '哇哈哈', '饮料', '瓶', '2000.00', '4000.00', '2', '6', '2015-11-24 15:12:03', 0, '', '2');
INSERT INTO `smbms_bill` VALUES ('20', 'BILL2022_002', '飞天茅台', '酒类', '箱', '100.00', '400000.00', '1', '10', '2022-05-04 11:05:22', 0, '', '1');
INSERT INTO `smbms_bill` VALUES ('21', 'BILL2017_001', '啤酒', '酒类', '瓶', '100.00', '300.00', '1', '6', '2021-10-10 10:10:10', '2', '2022-05-06 09:48:13', '1');
INSERT INTO `smbms_bill` VALUES ('23', 'BILL2022_004', '葵花籽', '炒货,干货', '斤', '1000.00', '10000.00', '1', '8', '2022-05-07 09:17:05', 0, '', '4');

 登录功能

当点击登录按钮时,发送请求至login/请求地址,因此,urls.py文件中需要定义该地址进行匹配,并将请求转发给子项目的views.py文件

urls.py

# 接收用户输入的登录的用户名和密码的地址
    path('login/',views.login),

 views.py

# 定义全局变量,用于保存登录成功之后的用户信息
user=[]

#定义方法,用于接收用户名和密码,做登录验证
def login(request):
    username=request.GET["username"]
    password=request.GET["password"]
    # 将接收的用户名和密码作为查询条件,查询用户表,判断该登录的用户是否存在
    # 如果存在则允许该用户进入主页面,否则跳转至登录失败页面,不允许该用户登录
    # 将user变量指明为使用外部的全局变量
    global user
    user=User.objects.filter(userName=username,userPassword=password)
    if user:
        # 说明该登录的用户存在,允许该用户进入主页
        return render(request,"home.html",{"user":user[0]})
    else:
        # 说明该登录的用户不存在,不允许进入主页,跳转至登录提示页面
        return render(request,"loginError.html")

 接着创建主页模板和登录失败的模板

home.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>超市订单管理系统--主页</title>
<style type="text/css">
	*{
		margin: 0px;
		padding: 0px;
	}
</style>

<script type="text/javascript">
	function yhgl() {
		//当用户点击用户管理功能的时候,需要判断当前登录的用户的身份,如果是管理员或者经理允许进入,普通员工不允许进入
		//先获得当前登录的用户的身份
		var input=document.getElementById("hidd");
		var i=input.value;
		switch (i) {
		case "1":
			//管理员身份
			//跳转一个可以操作用户的添加,修改,查询,删除等功能
			location.href="/yhgl/?type=1";
			break;
		case "2":
			//经理身份
			//跳转一个只能查看普通员工的个人信息的页面
			location.href="/yhgl/?type=2";
			break;
		case "3":
			//普通员工身份
			alert("您当前没有权限使用该功能");
			break;
		}
	}

	function gysgl() {
		//先获得当前登录的用户的身份
		var input=document.getElementById("hidd");
		var i=input.value;
		switch (i) {
		case "2":
			//能和供应商直接对接的只能是经理身份
			location.href="/gysgl/?type=2";
			break;
		case "3":
			//普通员工可以查看所有供应商信息,但不能添加,修改,删除供应商信息
			location.href="/gysgl/?type=3";
			break;
		default:
			//如果不是经理,那么都不允许操作该功能
			alert("当前登录的员工不具备该功能的操作权限");
			break;
		}
	}

	function ddgl() {
		var input=document.getElementById("hidd");
		var i=input.value;
		switch (i) {
            case "2":
			//经理,只能查看所有订单,修改订单,删除订单,不能添加订单,支付金额
			location.href="/getBills/";
			break;
		case "3":
			//普通员工,添加订单和查询自己的订单
			location.href="/getBillsByUserId/";
			break;
		default:
			//管理员身份不允许操作该功能
			alert("当前登录的员工不具备该功能的操作权限");
			break;
		}
	}
</script>
</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;">
			<input type="hidden" id="hidd" value="{{ user.userRole }}">
			<input type="button"  value="用户管理"  onclick="yhgl()"  style="width: 400px;height: 160px;margin-bottom: 20px;margin-top: 20px;"><br/>
			<input type="button"  value="供应商管理" onclick="gysgl()" style="width: 400px;height: 160px;margin-bottom: 20px;"><br/>
			<input type="button"  value="订单管理" onclick="ddgl()" style="width: 400px;height: 160px;margin-bottom: 20px;"><br/>

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

loginError.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>超市订单管理系统--提示页面</title>
</head>
<body>
    <p>登录失败,用户名不存在或者密码错误,请<a href="/">点击这里</a>进行重新登录!!!</p>
</body>
</html>

其界面效果如下

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/112047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UDP通信

目录 一.预备知识 1.1IP与MAC 1.2端口号 1.3TCP与UDP协议 2.4网络字节序 二.socket编程接口 2.1socket常见API 2.2sockaddr结构 3.UDP网络程序 3.1服务端 3.1.1服务端创建套接字 3.1.2绑定服务端 3.1.3recvfrom 3.2客户端 3.2.1客户端创建套接字 3.2.2客户端绑…

目标检测之Faster RCNN分析

基本流程 图像输入网络得到特征图使用RPN生成候选框&#xff0c;将候选框投影到特征图获得特征矩阵对特征矩阵使用ROI pooling得到特征图并展平&#xff0c;得到预测结果 重点解析 RPN在网络中的位置 在上图中&#xff0c;从feature map层来看&#xff0c;有两个指向上层的箭头…

善用数据框,让你的工作更严谨统一,让你的地图更优雅、更专业

前言:数据框,一个经常被忽略的东西,只有偶尔才被想起。善用数据框能更好的管理我们的投影,更能轻松的控制图层的范围,甚至利用裁剪数据框更能让我们的地图好看...什么是数据框 好吧,这个很基础,但是我还是要提一下,可能有的读者确实不知道,毕竟它的中文译名就很奇怪。…

get/post/put/delete请求头说明

目录 1.请求头说明 2.get 3.delete 4.post 5.put 6. 说明 7.Content-Type说明 1.请求头说明 前端发出的请求通过浏览器进行查看&#xff0c;可以发现分为四个部分。常规信息(General)&#xff0c;请求头信息(Request Headers)&#xff0c;响应头信息(Response Headers)…

[思维模式-12]:《如何系统思考》-8- 工具篇 - 因果回路图/系统循环图/系统控制图,系统思考的关键工具

目录 第1章 因果回路图概述 1.1 什么是因果回路图 1.2 反馈回路 第2章 因果图的组成 2.1 回路 2.2 变量 2.4 连接 > 不同变量之间的函数关系 2.5 增强回路 2.6 调节回路 2.7 时间延时 第3章 因果图的用途与应用 3.1 因果图的价值 3.2 因果图的用途 第4章 因果图…

分布式微服务技术栈-SpringCloud+RabbitMQ+Docker+Redis

微服务技术栈一、微服务 介绍了解1 架构结构案例与 springboot 兼容关系拆分案例拆分远程调用2 eureka注册中心3 Ribbon 负载均衡4 nacos 阿里注册中心一、微服务 介绍了解 分布式架构的一种 把服务进行 拆分 springcloud 解决了 服务拆分过程中的 治理问题 与单体应用 进行区…

云服务器ECS入门

云服务器ECS入门 一、什么是云服务器ECS 云服务器ECS (Elastic Compute Service) 是阿里云提供的性能卓越、稳定可靠、弹性扩展的laaS(Infrastructure as a Service) 级别云计算服务 云服务器ECS免去了您采购IT硬件的前期准备&#xff0c;让您像使用水、电、天然气等公共资源…

Linux 下 使用点阵在LCD上显示汉字,字符

文章目录前言一、显示字符1.获取点阵&#xff1a;2.描点&#xff08;显示字符函数&#xff09;&#xff1a;3. 要打开LCD设备&#xff1a;4. 通过ioctl 获取Framebuffer参数:5. 通过mmap映射出Framebuffer的地址&#xff1a;6.清屏并显示字符&#xff1a;二、显示汉字1.区位码&…

WSL2的安装、应用

WSL2的安装、应用WSL安装、升级常用命令WSL导入导出其他 - 图形界面、虚拟化WSL安装、升级 win10系统上开启WSL参考如下&#xff0c;我先是安装了WSL1&#xff0c;之后又升级到WSL2的。关键是一些Win10上电配置&#xff0c;之后在windows应用商店下载ubuntu即可。 win10上lin…

又一家中国企业加入RISC-V,中国力推之下必将打破ARM的垄断

近日消息指腾讯已正式加入RISC-V&#xff0c;并且是以高级别的高级会员加入&#xff0c;显示出腾讯开发RISC-V架构芯片的决心&#xff0c;这显示出中国芯片行业正齐心协力发展RISC-V架构&#xff0c;将打破ARM的垄断。腾讯在芯片行业已取得一定的成绩&#xff0c;分别推出了AI推…

文字对称中的数学与魔术(二)——英文字母到单词的对称性

早点关注我&#xff0c;精彩不错过&#xff01;在上一篇文章中&#xff0c;我们引入了语言文字对称性这个领域&#xff0c;重点介绍了阿拉伯数字的对称性&#xff0c;相关内容请戳&#xff1a;文字对称中的数学与魔术&#xff08;一&#xff09;——阿拉伯数字的对称性今天我们…

Linux系统基础——内存管理

Linux系统内存管理 特此说明: 刘超的趣谈linux操作系统是比较重要的参考资料&#xff0c;本文大部分内容和所有图片来源于这个专栏。 1 物理内存 物理内存根据 NUMA 架构分节点。每个节点里面再分区域。每个区域里面再分页。 物理内存页通过伙伴系统进行分配。进程通过虚拟地址…

xv6 源码调试环境搭建

一、资源 官网&#xff1a;https://pdos.csail.mit.edu/6.828/2022/ 二、搭建 xv6 调试环境 1、下载 xv6 源码 git clone git://github.com/mit-pdos/xv6-riscv.git2、安装工具链 特别说明&#xff1a;ubuntu 仓库中已经提供&#xff0c;可直接安装。 1、从 ubuntu 仓库中…

前端小知识:文本分句、词、字(Intl.Segmenter)

5. 文本分字、词、句 参考文章&#xff1a; https://mp.weixin.qq.com/s/MLmi-Yoi9sez8-5DPtcBVw   官方文档&#xff08;构造参数&#xff09;&#xff1a; https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter/Segmenter   …

Redis系列:深刻理解高性能Redis的本质

1 背景 分布式系统绕不开的核心之一就是数据缓存&#xff0c;有了缓存的支撑&#xff0c;系统的整体吞吐量会有很大的提升。通过使用缓存&#xff0c;我们把频繁查询的数据由磁盘调度到缓存中&#xff0c;保证数据的高效率读写。 当然&#xff0c;除了在内存内运行还远远不够&…

Linux系统基础——BIOS和Bootloader

BIOS和Bootloader 特此说明: 刘超的趣谈linux操作系统是比较重要的参考资料&#xff0c;本文大部分内容和所有图片来源于这个专栏。 1 了解背景 1.1 目的 操作系统不是在板子上电就直接运行的&#xff0c;上电到系统启动的中间过程要搞明白&#xff0c;比如了解linux系统启动…

12月24日:数据结构

Btree结构 ​​​​​​ BTree和BTree详解_菜鸟笔记的博客-CSDN博客_btree 简单的说一下什么是聚簇索引 , 和非聚簇索引有啥区别 聚簇索引&#xff1a;索引和数据存储放在了同一个文件中&#xff0c;找到了索引也就能找到数据 非聚簇索引&#xff1a;将数据存储和索引分开放置…

AAAI2023 | 户外超大规模场景数据如何生成?READ告诉你答案(浙大阿里巴巴)

点击下方卡片&#xff0c;关注“自动驾驶之心”公众号ADAS巨卷干货&#xff0c;即可获取点击进入→自动驾驶之心【多传感器融合】技术交流群后台回复【READ】获取论文和代码&#xff01;&#xff01;&#xff01;摘要合成自由视角真实感图像是多媒体领域的一项重要任务。随着高…

最长上升子序列(详解二分优化)

最长上升子序列一、题目描述二、思路分析1、问题分析2、思路分析&#xff08;1&#xff09;状态转移方程状态表示状态转移&#xff08;2&#xff09;循环设计三、代码实现一、题目描述 二、思路分析 1、问题分析 其实这道题第一个思路就是深度优先搜索&#xff0c;类似于全排…

一维树状数组

引入 树状数组和线段树具有相似的功能&#xff0c;但他俩毕竟还有一些区别&#xff1a;树状数组能有的操作&#xff0c;线段树一定有&#xff1b;线段树有的操作&#xff0c;树状数组不一定有。但是树状数组的代码要比线段树短&#xff0c;思维更清晰&#xff0c;速度也更快&a…