1、网站前台
在虚拟环境中启动程序后,使用浏览器访问“http://127.0.0.1:5000”即可进入网站前台首页。如图1所示。
单击首页左上角“注册”按钮,进入注册页面,如图2所示。注册完成后,进入登录页面,如图3所示。
登录成功后,可以在首页选择商品,也可以通过顶部导航栏分类选择商品。选择商品时,可以将鼠标悬浮到商品图片处,此时会在图片右下角显示一个购物车按钮,如图4所示,单击购物车按钮,将商品加入购物车,如图6所示。
另外,还有一种添加商品到购物车的方法,即可以单击商品图片,进入到商品详情页,如图5所示。
在商品详情页,可以更改商品数量(默认为1),然后单击“添加到购物车”按钮,即可进入购物车页面,如图6所示。
在购物页面,需要填写物流信息,也可以清空购物车。单击“结账”按钮,即可进入支付宝扫码支付页面,如图7所示。
本项目为本地项目,不包含线上支付功能,单击“支付”按钮,则默认用户已经支付成功。单击网站右上方的 “我的订单”,可以查看用户订单,如图8所示。
此外,用户还可以在顶部搜索栏根据商品名称模糊查询商品,如图9所示。搜索结果如图10所示。
2、网站后台
后台管理账号: mr
后台管理员密码:mrsoft
在浏览器中输入网址”http://127.0.0.1:5000/admin/login/” 即可访问网站后台登录页。如图11所示。
登录成功后,进入后台首页,运行效果如图12所示。
单击顶部菜单的“大分类管理”和“小分类管理”,可以管理大分类和小分类。例如,“图书—>管理”和“图书—>小说”中,图书就是大分类,管理和小说都是该大分类下的小分类。图13和图14分别为大分类管理和小分类管理页面。
添加商品前,需要选择对应的大分类和小分类。此外,在添加图片文件时,需要添加商品的图片路径。现将图片拷贝到“app\static\images\goods”路径下,如图15所示。
然后,在添加商品表单的“图片文件”处填写图片的名称,如图16所示。
当单击右侧菜单栏时,会显示对应的页面,菜单如图17所示。
部分源码如下,其余完整详见下载。
# 会员数据模型 class User(db.Model): __tablename__ = "user" id = db.Column(db.Integer, primary_key=True) # 编号 username = db.Column(db.String(100)) # 用户名 password = db.Column(db.String(100)) # 密码 email = db.Column(db.String(100), unique=True) # 邮箱 phone = db.Column(db.String(11), unique=True) # 手机号 consumption = db.Column(db.DECIMAL(10, 2), default=0) # 消费额 addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 注册时间 orders = db.relationship('Orders', backref='user') # 订单外键关系关联 def __repr__(self): return '<User %r>' % self.name def check_password(self, password): """ 检测密码是否正确 :param password: 密码 :return: 返回布尔值 """ from werkzeug.security import check_password_hash return check_password_hash(self.password, password) # 管理员 class Admin(db.Model): __tablename__ = "admin" id = db.Column(db.Integer, primary_key=True) # 编号 manager = db.Column(db.String(100), unique=True) # 管理员账号 password = db.Column(db.String(100)) # 管理员密码 def __repr__(self): return "<Admin %r>" % self.manager def check_password(self, password): """ 检测密码是否正确 :param password: 密码 :return: 返回布尔值 """ from werkzeug.security import check_password_hash return check_password_hash(self.password, password) # 大分类 class SuperCat(db.Model): __tablename__ = "supercat" id = db.Column(db.Integer, primary_key=True) # 编号 cat_name = db.Column(db.String(100)) # 大分类名称 addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 添加时间 subcat = db.relationship("SubCat", backref='supercat') # 外键关系关联 goods = db.relationship("Goods", backref='supercat') # 外键关系关联 def __repr__(self): return "<SuperCat %r>" % self.cat_name # 子分类 class SubCat(db.Model): __tablename__ = "subcat" id = db.Column(db.Integer, primary_key=True) # 编号 cat_name = db.Column(db.String(100)) # 子分类名称 addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 添加时间 super_cat_id = db.Column(db.Integer, db.ForeignKey('supercat.id')) # 所属大分类 goods = db.relationship("Goods", backref='subcat') # 外键关系关联 def __repr__(self): return "<SubCat %r>" % self.cat_name # 商品 class Goods(db.Model): __tablename__ = "goods" id = db.Column(db.Integer, primary_key=True) # 编号 name = db.Column(db.String(255)) # 名称 original_price = db.Column(db.DECIMAL(10,2)) # 原价 current_price = db.Column(db.DECIMAL(10,2)) # 现价 picture = db.Column(db.String(255)) # 图片 introduction = db.Column(db.Text) # 商品简介 views_count = db.Column(db.Integer,default=0) # 浏览次数 is_sale = db.Column(db.Boolean(), default=0) # 是否特价 is_new = db.Column(db.Boolean(), default=0) # 是否新品 # 设置外键 supercat_id = db.Column(db.Integer, db.ForeignKey('supercat.id')) # 所属大分类 subcat_id = db.Column(db.Integer, db.ForeignKey('subcat.id')) # 所属小分类 addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 添加时间 cart = db.relationship("Cart", backref='goods') # 订单外键关系关联 orders_detail = db.relationship("OrdersDetail", backref='goods') # 订单外键关系关联 def __repr__(self): return "<Goods %r>" % self.name # 购物车 class Cart(db.Model): __tablename__ = 'cart' id = db.Column(db.Integer, primary_key=True) # 编号 goods_id = db.Column(db.Integer, db.ForeignKey('goods.id')) # 所属商品 user_id = db.Column(db.Integer) # 所属用户 number = db.Column(db.Integer, default=0) # 购买数量 addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 添加时间 def __repr__(self): return "<Cart %r>" % self.id # 订单 class Orders(db.Model): __tablename__ = 'orders' id = db.Column(db.Integer, primary_key=True) # 编号 user_id = db.Column(db.Integer, db.ForeignKey('user.id')) # 所属用户 recevie_name = db.Column(db.String(255)) # 收款人姓名 recevie_address = db.Column(db.String(255)) # 收款人地址 recevie_tel = db.Column(db.String(255)) # 收款人电话 remark = db.Column(db.String(255)) # 备注信息 addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 添加时间 orders_detail = db.relationship("OrdersDetail", backref='orders') # 外键关系关联 def __repr__(self): return "<Orders %r>" % self.id