项目描述
该项目实现电影系统的后台接口,包括用户,电影,场次,订单,评论,优惠券,推荐,收藏等多个模块,同时提供一个管理后台进行操作和管理。使用Swagger使用接口的可视化,方便测试。
项目截图
项目结构
MovieAdmin
├── requirements.txt # 第三方库依赖文件
└── src
├── app
│ ├── admin # 管理后台文件
│ │ ├── admin.py
│ │ ├── __init__.py
│ │ └── views.py
│ ├── api # 接口文件
│ │ ├── comment.py
│ │ ├── coupon.py
│ │ ├── favorite.py
│ │ ├── __init__.py
│ │ ├── movie.py
│ │ ├── order.py
│ │ ├── password.py
│ │ ├── screen.py
│ │ ├── session.py
│ │ └── user.py
│ ├── __init__.py
│ ├── models.py # 数据库模型
│ ├── static # 静态文件,保存用户头像和电影海报等
│ │ ├── images
│ │ │ ├── poster
│ │ │ └── user
│ │ │ └── default.jpg
│ │ └── js
│ │ ├── jquery-3.2.1.min.js
│ │ └── md5.min.js
│ ├── templates
│ │ ├── admin
│ │ │ └── index.html
│ │ └── admin.html
│ └── utils.py
├── instance # 私密配置文件夹
│ ├── __init__.py
│ └── secure_conf.py
└── server.py # 主服务运行文件
项目运行
安装Python2.7环境
安装第三方依赖
pip install -r requirements.txt
运行
python server.py
运行后会在 src 目录下生成 data.sqlite
文件,存储数据库相关数据,访问 http://localhost:5000/admin/ 进入后台管理系统,管理系统账号密码保存在 src/instance/secure_conf.py
中,可自行更改。
项目实现
数据库建模
电影系统的主要功能是用户可以浏览电影信息并选择场次和座位进行下单购票,完成支付后会随机赠送优惠券,可在下次购票时使用。观看完电影之后可进行电影评论,用户也可以收藏电影,首页会定期推荐新上映的热门电影,因此该项目至少涉及以下几张数据表:用户表,电影表,场次表,订单表,评论表,优惠券表,推荐表,收藏表。
完整的数据库模型如下图:
以上数据库模型,以users为例,对应的sql语句如下:
-- ----------------------------
-- Table structure for users 用户表
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` varchar(11) NOT NULL COMMENT '用户id(手机号码)',
`password` varchar(32) NOT NULL COMMENT '登录密码',
`payPassword` varchar(32) NOT NULL COMMENT '支付密码',
`nickname` varchar(20) NOT NULL DEFAULT '' COMMENT '昵称',
`money` float NOT NULL COMMENT '余额',
`description` varchar(50) NOT NULL DEFAULT '' COMMENT '个性签名',
`avatar` varchar(32) NOT NULL DEFAULT '' COMMENT '头像路径',
`isAdmin` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
对象关系映射 ORM
对象关系映射(Object Relational Mapping,简称ORM),用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。对象关系映射(Object-Relational Mapping)提供了概念性的、易于理解的模型化数据的方法。在大多数的 Web 应用中,都会将数据存储在关系型数据库中,使用 ORM 技术可以在代码通过操作对象实现数据库操作,无需自己写sql语句,如前面一大段建表的语句,ORM模型的简单性简化了数据库查询过程。使用ORM查询工具,用户可以访问期望数据,而不必理解数据库的底层结构。Flask 中可使用Flask-SQLAlchemy
来实现 ORM。
models.py
中定义了每张数据库表对应的对象,通过对这些对象的操作,可以直接实现对数据库的增删改查,无需编写sql语句。以订单表为例:
# -*- coding: utf-8 -*-
from datetime import datetime, date
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Order(db.Model):
"""订单"""
__tablename__ = &#