Python flask 构建微电影视频网站☝☝☝
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 构建微电影视频网站☝☝☝的更多相关文章
- Python flask 构建微电影视频网站✍✍✍
Python flask 构建微电影视频网站 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大 ...
- Python Flask 构建微电影视频网站
前言 学完本教程,你将掌握: 1.学会使用整形.浮点型.路径型.字符串型正则表达式路由转化器 2.学会使用post与get请求.上传文件.cookie获取与相应.404处理 3.学会适应模板自动转义. ...
- Flask 构建微电影视频网站(一)
Flask构建电影视频网站 Python MTV模型 Flask微内核 Flask扩展插件配置及使用方法 根据业务开发网站前后台功能 Flask结合MySQL数据库 你将可以独立开发网站 独立部署运维 ...
- Flask 构建微电影视频网站(四)
后台管理 实现后台管理系统使用flask sqlalchemy结合mysql数据库进行增删改查操作.分页的使用.路由装饰器定义.模板中变量调用.登录会话机制.上传文件.flask wtforms表单使 ...
- Flask 构建微电影视频网站(二)
搭建前台页面 前台布局搭建 将static中的文件拷贝到项目的static目录下 在app/templates/home下新建home.html,当作基础模板,并修改静态资源链接 <!docty ...
- Flask 构建微电影视频网站(八)
评论收藏及弹幕 实现电影评论添加及列表.数据查询实现统计播放量和评论量.jquery ajax实现收藏电影,flask结合redis消息队列实现电影弹幕,bug处理等功能. 电影评论-统计 class ...
- Flask 构建微电影视频网站(三)
搭建后台页面 视图函数位于admin文件夹下, app/admin/views.py 管理员登录页面搭建 视图函数 @admin.route('/') def index(): return '后台主 ...
- Flask 构建微电影视频网站(七)
电影模块实现 上映预告 @home.route("/animation/") def animation(): """ 首页轮播动画 "&q ...
- Flask 构建微电影视频网站(六)
会员模块实现 会员注册 class RegistForm(FlaskForm): name = StringField( label="昵称", validators=[ Data ...
随机推荐
- 如何设置java虚拟机参数
这两天在看java虚拟机,从书上看到可以自己设置java虚拟机的参数,可以方便开发人员进行系统调优和故障排查 Ecplise设置java虚拟机参数: window-->preferences-- ...
- Python(Head First)学习笔记:四
4 持久存储:文件存储.读写 数据保存到文件:在学习的过程中出现了一个问题,老是报一个错:SyntaxError: invalid syntax: 这个是语法错误,后来搜了下才知道是python2.7 ...
- Python网络爬虫实战(二)数据解析
上一篇说完了如何爬取一个网页,以及爬取中可能遇到的几个问题.那么接下来我们就需要对已经爬取下来的网页进行解析,从中提取出我们想要的数据. 根据爬取下来的数据,我们需要写不同的解析方式,最常见的一般都是 ...
- Java高性能编程之CAS与ABA及解决方法
Java高性能编程之CAS与ABA及解决方法 前言 如果喜欢暗色调的界面或者想换换界面,可以看看我在个人博客发布的 Java高性能编程之CAS与ABA及解决方法. CAS概念 CAS,全称Compar ...
- Flink 从 0 到 1 学习 —— Flink 配置文件详解
前面文章我们已经知道 Flink 是什么东西了,安装好 Flink 后,我们再来看下安装路径下的配置文件吧. 安装目录下主要有 flink-conf.yaml 配置.日志的配置文件.zk 配置.Fli ...
- 使用PrepareStatement
包结构: 第一步:编写获取连接工具类 package com.atguigu.jdbc; import java.io.IOException; import java.io.InputStream; ...
- 当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题?
作者 | 阿里云容器平台高级技术专家 曾凡松(逐灵) 本文主要介绍阿里巴巴在大规模生产环境中落地 Kubernetes 的过程中,在集群规模上遇到的典型问题以及对应的解决方案,内容包含对 etcd.k ...
- 第六届蓝桥杯java b组第五题
九数组分数 1,2,3…9 这九个数字组成一个分数,其值恰好为1/3,如何组法? 下面的程序实现了该功能,请填写划线部分缺失的代码. public class A { public static vo ...
- 暑期——第九周总结(1,林子雨老师关于hdfs eclipse案例报错问题【已解决】)
所花时间:7天 代码行:1000(Java)+500(Python)+300(C++) 博客量:1篇 了解到知识点 : 一: 解决"Class org.apache.hadoop.hdfs. ...
- 原来python如此神奇
一.优缺点分析 1.缺点: ① 数学问题的生成中只考虑了消除乘除法加括号的无效情况(例如3*(4+5)或(6*5)/2这样的计算),但没有去掉加减法加括号的无效情况(例如(4+(7+8))或(3-(2 ...