Python flask 构建微电影视频网站☝☝☝

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

pip install flask-sqlalchemy

2.创建movie数据库

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

create database movie

3.定义MaridDB数据库连接

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

# _*_coding:utf-8_*_

from flask import Flask, render_template

from flask_sqlalchemy import SQLAlchemy

import pymysql

# 实例化Flask类得到app对象

app = Flask(__name__)

# 定义连接的数据库

app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:root1234movie"

# 如果设置成True(默认情况),Flask-SQLAlchemy将会追踪对象的修改并且发送信号

# 这需要额外的内存,如果不必要的可以禁用

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

# 定义secret_key

app.config['SECRET_KEY'] = "6bd749587aad49399f674b202a07d56f"

db = SQLAlchemy(app)

4.定义数据模型类

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

# _*_coding:utf-8_*_

from datetime import datetime

from app import db

4.1 定义会员数据模型

# 会员

class User(db.Model):

__tablename__ = 'user' # 定义用户表在数据库中的名称

id = db.Column(db.Integer, primary_key=True) # 用户编号

name = db.Column(db.String(100), unique=True) # 呢称

pwd = db.Column(db.String(100)) # 密码

email = db.Column(db.String(100), unique=True) # 邮箱

phone = db.Column(db.String(11), unique=True) # 用户手机号码

info = db.Column(db.Text) # 个性简介

face = db.Column(db.String(255), unique=True) # 头像

addtime = db.Column(db.DateTime, index=True, default=datetime.utcnow) # 注册时间

uuid = db.Column(db.String(255), unique=True) # 唯一标识

userlogs = db.relationship("Userlog", backref='user') # 会员登录日志外键关系关联

comments = db.relationship('Comment', backref='user') # 评论外键关系关联

moviecols = db.relationship('Moviecol', backref='user') # 电影收藏外键关系关联

# 返回定义类型

def __repr__(self):

return "<User %r>" % self.name

# 检测密码,判断用户输入的密码是否与数据库中保存的用户的密码相同

def check_pwd(self,pwd):

from werkzeug.security import check_password_hash

return check_password_hash(self.pwd,pwd)

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

# 会员登录日志

class Userlog(db.Model):

__tablename__ = 'userlog' # 定义用户日志表在数据库中的名称

id = db.Column(db.Integer, primary_key=True) # 编号

user_id = db.Column(db.Integer, db.ForeignKey('user.id')) # 所属会员编号

ip = db.Column(db.String(100)) # 最近登录IP地址

addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 最近登录时间

def __repr__(self):

return "<Userlog %r>" % self.id

4.3 定义标签数据模型

# 电影标签

class Tag(db.Model):

__tablename__ = 'tag' # 定义电影标签表在数据库中的名称

id = db.Column(db.Integer, primary_key=True) # 电影编号

name = db.Column(db.String(100), unique=True) # 标题

addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 电影添加时间

movies = db.relationship("Movie", backref='tag') # 电影外键的键值

def __repr__(self):

return "<Tag %r>" % self.name

4.4 定义电影数据模型

# 电影

class Movie(db.Model):

__tablename__ = 'movie' # 定义电影表在数据库中的名称

id = db.Column(db.Integer, primary_key=True) # 编号

title = db.Column(db.String(255), unique=True) # 标题

url = db.Column(db.String(255), unique=True) # 地址

info = db.Column(db.Text) # 简介

logo = db.Column(db.String(255), unique=True) # 封面

star = db.Column(db.SmallInteger) # 星级

playnum = db.Column(db.BigInteger) # 播放量

commentnum = db.Column(db.BigInteger) # 评论量

tag_id = db.Column(db.Integer, db.ForeignKey('tag.id')) # 所属标签

area = db.Column(db.String(255)) # 上映地区

release_time = db.Column(db.Date) # 上映时间

length = db.Column(db.String(100)) # 播放时间

addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 添加时间

comments = db.relationship('Comment', backref='movie') # 评论外键关系关联

moviecols = db.relationship('Moviecol', backref='movie') # 收藏外键关系关联

def __repr__(self):

return "<Movie %r>" % self.title

4.5 定义上映预告数据模型

# 上映预告

class Preview(db.Model):

__tablename__ = 'preview' # 定义电影上映预告表在数据库中的名称

id = db.Column(db.Integer, primary_key=True) # 编号

title = db.Column(db.String(255), unique=True) # 标题

logo = db.Column(db.String(255), unique=True) # 封面

addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 添加时间

def __repr__(self):

return "<Preview %r>" % self.title

4.6 定义电影评论数据模型

# 电影评论

class Comment(db.Model):

__tablename__ = 'comment' # 定义电影评论表在数据库中的名称

id = db.Column(db.Integer, primary_key=True) # 编号

content = db.Column(db.Text) # 评论内容

movie_id = db.Column(db.Integer, db.ForeignKey('movie.id')) # 所属电影

user_id = db.Column(db.Integer, db.ForeignKey('user.id')) # 所属用户

addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 添加时间

def __repr__(self):

return '<Comment %r>' % self.id

4.7 定义电影收藏数据模型

# 电影收藏

class Moviecol(db.Model):

__tablename__ = 'moviecol' # 定义电影收藏表在数据库中的名称

id = db.Column(db.Integer, primary_key=True) # 编号

movie_id = db.Column(db.Integer, db.ForeignKey('movie.id')) # 电影编号

user_id = db.Column(db.Integer, db.ForeignKey('user.id')) # 用户编号

addtime = db.Column(db.DateTime, index=True, default=datetime) # 添加收藏时间

def __repr__(self):

return "<Moviecol %r>" % self.id

4.8 定义权限数据模型

# 权限

class Auth(db.Model):

__tablename__ = 'auth' # 定义用户权限表在数据库中的名称

id = db.Column(db.Integer, primary_key=True) # 编号

name = db.Column(db.String(100), unique=True) # 权限名称

url = db.Column(db.String(100), unique=True) # 地址

addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 添加时间

def __repr__(self):

return "<Auth %r>" % self.name

4.9 定义角色数据模型

# 角色

class Role(db.Model):

__tablename__ = 'role' # 定义用户角色表在数据库中的名称

id = db.Column(db.Integer, primary_key=True) # 编号

name = db.Column(db.String(128), unique=True) # 角色名称

auths = db.Column(db.String(512))

addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 添加时间

admins = db.relationship("Admin", backref='role') # 管理员外键关系关联

def __repr__(self):

return "<Role %r>" % self.name

4.10 定义管理员数据模型

# 管理员

class Admin(db.Model):

__tablename__ = 'admin' # 定义管理员表在数据库中的名称

id = db.Column(db.Integer, primary_key=True) # 编号

name = db.Column(db.String(100), unique=True) # 管理员账号

pwd = db.Column(db.String(100)) # 管理员密码

is_super = db.Column(db.SmallInteger) # 是否为超级管理员,0为超级管理员

role_id = db.Column(db.Integer, db.ForeignKey('role.id')) # 所属角色

addtime = db.Column(db.DateTime, index=True, default=datetime.now)

adminlogs = db.relationship('Adminlog', backref='admin') # 管理员登录日志外键关系关联

oplogs = db.relationship('Oplog', backref='admin') # 管理员操作日志外键关系关联

def __repr__(self):

return "<Admin %r>" % self.name

def check_pwd(self, pwd):

from werkzeug.security import check_password_hash

return check_password_hash(self.pwd, pwd)

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

# 管理员登录日志

class Adminlog(db.Model):

__tablename__ = 'adminlog' # 定义管理员日志表在数据库中的名称

id = db.Column(db.Integer, primary_key=True) # 编号

admin_id = db.Column(db.Integer, db.ForeignKey('admin.id')) # 所属管理员

ip = db.Column(db.String(100)) # 登录IP

addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 登录时间

def __repr__(self):

return "<Adminlog %r>" % self.id

4.12 定义用户操作日志

# 操作日志

class Oplog(db.Model):

__tablename__ = 'oplog' # 定义操作日志表在数据库中的名称

id = db.Column(db.Integer, primary_key=True) # 编号

admin_id = db.Column(db.Integer, db.ForeignKey('admin.id')) # 所属管理员

ip = db.Column(db.String(100)) # 登录IP

reason = db.Column(db.String(600)) # 操作原因

addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 登录时间

def __repr__(self):

return "<Oplog %r>" % self.id

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

5. 创建数据库

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

if __name__ == '__main__':

db.create_all()

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

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

Python flask 构建微电影视频网站☝☝☝的更多相关文章

  1. Python flask 构建微电影视频网站✍✍✍

    Python flask 构建微电影视频网站  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大 ...

  2. Python Flask 构建微电影视频网站

    前言 学完本教程,你将掌握: 1.学会使用整形.浮点型.路径型.字符串型正则表达式路由转化器 2.学会使用post与get请求.上传文件.cookie获取与相应.404处理 3.学会适应模板自动转义. ...

  3. Flask 构建微电影视频网站(一)

    Flask构建电影视频网站 Python MTV模型 Flask微内核 Flask扩展插件配置及使用方法 根据业务开发网站前后台功能 Flask结合MySQL数据库 你将可以独立开发网站 独立部署运维 ...

  4. Flask 构建微电影视频网站(四)

    后台管理 实现后台管理系统使用flask sqlalchemy结合mysql数据库进行增删改查操作.分页的使用.路由装饰器定义.模板中变量调用.登录会话机制.上传文件.flask wtforms表单使 ...

  5. Flask 构建微电影视频网站(二)

    搭建前台页面 前台布局搭建 将static中的文件拷贝到项目的static目录下 在app/templates/home下新建home.html,当作基础模板,并修改静态资源链接 <!docty ...

  6. Flask 构建微电影视频网站(八)

    评论收藏及弹幕 实现电影评论添加及列表.数据查询实现统计播放量和评论量.jquery ajax实现收藏电影,flask结合redis消息队列实现电影弹幕,bug处理等功能. 电影评论-统计 class ...

  7. Flask 构建微电影视频网站(三)

    搭建后台页面 视图函数位于admin文件夹下, app/admin/views.py 管理员登录页面搭建 视图函数 @admin.route('/') def index(): return '后台主 ...

  8. Flask 构建微电影视频网站(七)

    电影模块实现 上映预告 @home.route("/animation/") def animation(): """ 首页轮播动画 "&q ...

  9. Flask 构建微电影视频网站(六)

    会员模块实现 会员注册 class RegistForm(FlaskForm): name = StringField( label="昵称", validators=[ Data ...

随机推荐

  1. c语言实现去除字符串首尾空格

    字符串内存图如下: 引入头文件: 1 #include<stdlib.h> 2 #include<stdio.h> 3 #include<string.h> 函数原 ...

  2. TypeScript + React + Redux 实战简单天气APP全套完整项目

    下载链接:https://www.yinxiangit.com/171.html 目录: 从面向过程的js到面向对象的js,让web前端更加高大尚.让你的前端步步日上,紧跟技术发展的前沿.让你构建更加 ...

  3. 浅入浅出 Java 排序算法

    Java String 源码的排序算法 一.前言 Q:什么是选择问题? 选择问题,是假设一组 N 个数,要确定其中第 K 个最大值者.比如 A 与 B 对象需要哪个更大?又比如:要考虑从一些数组中找出 ...

  4. Factory Method工厂方法模式

    定义一个用于创建对象的接口,让子类决定将哪一个类实例化.Factory Method使一个类的实例化延迟到其子类,属于创建型模式 在此模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类负责生产 ...

  5. kafka topic消息分配partition规则(Java源码)

    我们知道Kafka 的消息通过topic进行分类.topic可以被分为若干个partition来存储消息.消息以追加的方式写入partition,然后以先入先出的顺序读取. 下面是topic和part ...

  6. Android四大组件初识之Activity

    一.Activity的生命周期 Activity生命周期是一系列方法调用.熟悉各个方法调用时间,我们在创建activity就能根据具体实现选择合适的方法覆盖. 1.  覆盖Activity的生命周期方 ...

  7. 在一个升序数组中添加最少的数字,使得从1--n之间所有的数都能用数组中几个数的和表示

    一个Java的笔试题上面遇到的题,当时没有做出来. 拆分: 序列升序 1--n所有的数都要能表示 用数组中数字的和表示 添加最少的数字 思路:这个要先从小的数开始表示,因为大的数可以用小数表示. 1- ...

  8. a417: 螺旋矩陣

    题目: 每行有一正整数T,代表有几组测试数据 接下来有T行,每行有N.M两正整数 N为矩阵长宽,就是会有N*N矩阵 M为方向,M=1为顺时钟,M=2为逆时钟 N范围为1~100之间 思路: 所以,代码 ...

  9. VMware Ubuntu 19最新安装详细过程

    ubuntu可以说是目前最流行的Linux改造版了(如果安卓不算的话),现在的很多服务器都是linux系统的,而自己属于那种前端也搞,后台也搞,对框架搭建也感兴趣,但是很多生产上的框架和工具都是安装在 ...

  10. 实现一个正则表达式引擎in Python(三)

    项目地址:Regex in Python 前两篇已经完成的写了一个基于NFA的正则表达式引擎了,下面要做的就是更近一步,把NFA转换为DFA,并对DFA最小化 DFA的定义 对于NFA转换为DFA的算 ...