Python flask 构建微电影视频网站 学习 教程✌✌

Python flask 构建微电影视频网站 学习 教程

 

1.安装数据库连接依赖包

pip install flask-sqlalchemy

2.创建movie数据库

在CentOS虚拟机,进入MaridDB数据库提示符,创建movie数据库

create database movie

3.定义MaridDB数据库连接

在app目录下的__init__.py文件中添加以下内容

  1.  
    # _*_coding:utf-8_*_
  2.  
     
  3.  
    from flask import Flask, render_template
  4.  
    from flask_sqlalchemy import SQLAlchemy
  5.  
    import pymysql
  6.  
     
  7.  
    # 实例化Flask类得到app对象
  8.  
    app = Flask(__name__)
  9.  
     
  10.  
    # 定义连接的数据库
  11.  
    app.config[ 'SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:root1234movie"
  12.  
     
  13.  
    # 如果设置成True(默认情况),Flask-SQLAlchemy将会追踪对象的修改并且发送信号
  14.  
    # 这需要额外的内存,如果不必要的可以禁用
  15.  
    app.config[ 'SQLALCHEMY_TRACK_MODIFICATIONS'] = True
  16.  
     
  17.  
    # 定义secret_key
  18.  
    app.config[ 'SECRET_KEY'] = "6bd749587aad49399f674b202a07d56f"
  19.  
     
  20.  
    db = SQLAlchemy(app)

4.定义数据模型类

在app目录下创建models.py文件,文件内容为

  1.  
    # _*_coding:utf-8_*_
  2.  
     
  3.  
    from datetime import datetime
  4.  
    from app import db

4.1 定义会员数据模型

  1.  
    # 会员
  2.  
    class User(db.Model):
  3.  
    __tablename__ = 'user' # 定义用户表在数据库中的名称
  4.  
    id = db.Column(db.Integer, primary_key= True) # 用户编号
  5.  
    name = db.Column(db.String( 100), unique=True) # 呢称
  6.  
    pwd = db.Column(db.String( 100)) # 密码
  7.  
    email = db.Column(db.String( 100), unique=True) # 邮箱
  8.  
    phone = db.Column(db.String( 11), unique=True) # 用户手机号码
  9.  
    info = db.Column(db.Text) # 个性简介
  10.  
    face = db.Column(db.String( 255), unique=True) # 头像
  11.  
    addtime = db.Column(db.DateTime, index= True, default=datetime.utcnow) # 注册时间
  12.  
    uuid = db.Column(db.String( 255), unique=True) # 唯一标识
  13.  
    userlogs = db.relationship( "Userlog", backref='user') # 会员登录日志外键关系关联
  14.  
    comments = db.relationship( 'Comment', backref='user') # 评论外键关系关联
  15.  
    moviecols = db.relationship( 'Moviecol', backref='user') # 电影收藏外键关系关联
  16.  
     
  17.  
    # 返回定义类型
  18.  
    def __repr__(self):
  19.  
    return "" % self.name
  20.  
     
  21.  
    # 检测密码,判断用户输入的密码是否与数据库中保存的用户的密码相同
  22.  
    def check_pwd(self,pwd):
  23.  
    from werkzeug.security import check_password_hash
  24.  
    return check_password_hash(self.pwd,pwd)

4.2 定义会员登录日志数据模型

  1.  
    # 会员登录日志
  2.  
    class Userlog(db.Model):
  3.  
    __tablename__ = 'userlog' # 定义用户日志表在数据库中的名称
  4.  
    id = db.Column(db.Integer, primary_key= True) # 编号
  5.  
    user_id = db.Column(db.Integer, db.ForeignKey( 'user.id')) # 所属会员编号
  6.  
    ip = db.Column(db.String( 100)) # 最近登录IP地址
  7.  
    addtime = db.Column(db.DateTime, index= True, default=datetime.now) # 最近登录时间
  8.  
     
  9.  
    def __repr__(self):
  10.  
    return "" % self.id

4.3 定义标签数据模型

  1.  
    # 电影标签
  2.  
    class Tag(db.Model):
  3.  
    __tablename__ = 'tag' # 定义电影标签表在数据库中的名称
  4.  
    id = db.Column(db.Integer, primary_key= True) # 电影编号
  5.  
    name = db.Column(db.String( 100), unique=True) # 标题
  6.  
    addtime = db.Column(db.DateTime, index= True, default=datetime.now) # 电影添加时间
  7.  
    movies = db.relationship( "Movie", backref='tag') # 电影外键的键值
  8.  
     
  9.  
    def __repr__(self):
  10.  
    return "" % self.name

4.4 定义电影数据模型

  1.  
    # 电影
  2.  
    class Movie(db.Model):
  3.  
    __tablename__ = 'movie' # 定义电影表在数据库中的名称
  4.  
    id = db.Column(db.Integer, primary_key= True) # 编号
  5.  
    title = db.Column(db.String( 255), unique=True) # 标题
  6.  
    url = db.Column(db.String( 255), unique=True) # 地址
  7.  
    info = db.Column(db.Text) # 简介
  8.  
    logo = db.Column(db.String( 255), unique=True) # 封面
  9.  
    star = db.Column(db.SmallInteger) # 星级
  10.  
    playnum = db.Column(db.BigInteger) # 播放量
  11.  
    commentnum = db.Column(db.BigInteger) # 评论量
  12.  
    tag_id = db.Column(db.Integer, db.ForeignKey( 'tag.id')) # 所属标签
  13.  
    area = db.Column(db.String( 255)) # 上映地区
  14.  
    release_time = db.Column(db.Date) # 上映时间
  15.  
    length = db.Column(db.String( 100)) # 播放时间
  16.  
    addtime = db.Column(db.DateTime, index= True, default=datetime.now) # 添加时间
  17.  
    comments = db.relationship( 'Comment', backref='movie') # 评论外键关系关联
  18.  
    moviecols = db.relationship( 'Moviecol', backref='movie') # 收藏外键关系关联
  19.  
     
  20.  
    def __repr__(self):
  21.  
    return "" % self.title

4.5 定义上映预告数据模型

  1.  
    # 上映预告
  2.  
    class Preview(db.Model):
  3.  
    __tablename__ = 'preview' # 定义电影上映预告表在数据库中的名称
  4.  
    id = db.Column(db.Integer, primary_key= True) # 编号
  5.  
    title = db.Column(db.String( 255), unique=True) # 标题
  6.  
    logo = db.Column(db.String( 255), unique=True) # 封面
  7.  
    addtime = db.Column(db.DateTime, index= True, default=datetime.now) # 添加时间
  8.  
     
  9.  
    def __repr__(self):
  10.  
    return "" % self.title

4.6 定义电影评论数据模型

  1.  
    # 电影评论
  2.  
    class Comment(db.Model):
  3.  
    __tablename__ = 'comment' # 定义电影评论表在数据库中的名称
  4.  
    id = db.Column(db.Integer, primary_key= True) # 编号
  5.  
    content = db.Column(db.Text) # 评论内容
  6.  
    movie_id = db.Column(db.Integer, db.ForeignKey( 'movie.id')) # 所属电影
  7.  
    user_id = db.Column(db.Integer, db.ForeignKey( 'user.id')) # 所属用户
  8.  
    addtime = db.Column(db.DateTime, index= True, default=datetime.now) # 添加时间
  9.  
     
  10.  
    def __repr__(self):
  11.  
    return '' % self.id

4.7 定义电影收藏数据模型

  1.  
    # 电影收藏
  2.  
    class Moviecol(db.Model):
  3.  
    __tablename__ = 'moviecol' # 定义电影收藏表在数据库中的名称
  4.  
    id = db.Column(db.Integer, primary_key= True) # 编号
  5.  
    movie_id = db.Column(db.Integer, db.ForeignKey( 'movie.id')) # 电影编号
  6.  
    user_id = db.Column(db.Integer, db.ForeignKey( 'user.id')) # 用户编号
  7.  
    addtime = db.Column(db.DateTime, index= True, default=datetime) # 添加收藏时间
  8.  
     
  9.  
    def __repr__(self):
  10.  
    return "" % self.id

4.8 定义权限数据模型

  1.  
    # 权限
  2.  
    class Auth(db.Model):
  3.  
    __tablename__ = 'auth' # 定义用户权限表在数据库中的名称
  4.  
    id = db.Column(db.Integer, primary_key= True) # 编号
  5.  
    name = db.Column(db.String( 100), unique=True) # 权限名称
  6.  
    url = db.Column(db.String( 100), unique=True) # 地址
  7.  
    addtime = db.Column(db.DateTime, index= True, default=datetime.now) # 添加时间
  8.  
     
  9.  
    def __repr__(self):
  10.  
    return "" % self.name

4.9 定义角色数据模型

  1.  
    # 角色
  2.  
    class Role(db.Model):
  3.  
    __tablename__ = 'role' # 定义用户角色表在数据库中的名称
  4.  
    id = db.Column(db.Integer, primary_key= True) # 编号
  5.  
    name = db.Column(db.String( 128), unique=True) # 角色名称
  6.  
    auths = db.Column(db.String( 512))
  7.  
    addtime = db.Column(db.DateTime, index= True, default=datetime.now) # 添加时间
  8.  
    admins = db.relationship( "Admin", backref='role') # 管理员外键关系关联
  9.  
     
  10.  
    def __repr__(self):
  11.  
    return "" % self.name

4.10 定义管理员数据模型

  1.  
    # 管理员
  2.  
    class Admin(db.Model):
  3.  
    __tablename__ = 'admin' # 定义管理员表在数据库中的名称
  4.  
    id = db.Column(db.Integer, primary_key= True) # 编号
  5.  
    name = db.Column(db.String( 100), unique=True) # 管理员账号
  6.  
    pwd = db.Column(db.String( 100)) # 管理员密码
  7.  
    is_super = db.Column(db.SmallInteger) # 是否为超级管理员,0为超级管理员
  8.  
    role_id = db.Column(db.Integer, db.ForeignKey( 'role.id')) # 所属角色
  9.  
    addtime = db.Column(db.DateTime, index= True, default=datetime.now)
  10.  
    adminlogs = db.relationship( 'Adminlog', backref='admin') # 管理员登录日志外键关系关联
  11.  
    oplogs = db.relationship( 'Oplog', backref='admin') # 管理员操作日志外键关系关联
  12.  
     
  13.  
    def __repr__(self):
  14.  
    return "" % self.name
  15.  
     
  16.  
    def check_pwd(self, pwd):
  17.  
    from werkzeug.security import check_password_hash
  18.  
    return check_password_hash(self.pwd, pwd)

4.11 定义管理员登录日志数据模型

  1.  
    # 管理员登录日志
  2.  
    class Adminlog(db.Model):
  3.  
    __tablename__ = 'adminlog' # 定义管理员日志表在数据库中的名称
  4.  
    id = db.Column(db.Integer, primary_key= True) # 编号
  5.  
    admin_id = db.Column(db.Integer, db.ForeignKey( 'admin.id')) # 所属管理员
  6.  
    ip = db.Column(db.String( 100)) # 登录IP
  7.  
    addtime = db.Column(db.DateTime, index= True, default=datetime.now) # 登录时间
  8.  
     
  9.  
    def __repr__(self):
  10.  
    return "" % self.id

4.12 定义用户操作日志

  1.  
    # 操作日志
  2.  
    class Oplog(db.Model):
  3.  
    __tablename__ = 'oplog' # 定义操作日志表在数据库中的名称
  4.  
    id = db.Column(db.Integer, primary_key= True) # 编号
  5.  
    admin_id = db.Column(db.Integer, db.ForeignKey( 'admin.id')) # 所属管理员
  6.  
    ip = db.Column(db.String( 100)) # 登录IP
  7.  
    reason = db.Column(db.String( 600)) # 操作原因
  8.  
    addtime = db.Column(db.DateTime, index= True, default=datetime.now) # 登录时间
  9.  
     
  10.  
    def __repr__(self):
  11.  
    return "" % self.id

在models.py文件保存所有的模型类

5. 创建数据库

models.py文件中,定义main函数,在MariaDB数据库中生成前面定义的模型表

  1.  
    if __name__ == '__main__':
  2.  
    db.create_all()

单独执行models.py文件,在MariaDB数据库的movie数据库中创建数据表

数据库创建完成,进入MariaDB数据库提示符,查看创建的数据表

Python flask 构建微电影视频网站 学习 教程✌✌_第1张图片

你可能感兴趣的:(Python flask 构建微电影视频网站 学习 教程✌✌)