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:[email protected]:3306/movie"

# 如果设置成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数据库提示符,查看创建的数据表

原文地址:https://www.cnblogs.com/renpingsheng/p/9062166.html

时间: 2024-09-30 20:40:50

Flask开发微电影网站(二)的相关文章

Flask开发微电影网站(一)

1.用到的Flask知识 1.使用整形,浮点型,路径型,字符串型下正则表达式路由转化器 2.使用GET与POST请求,上传文件,cookie获取与响应,404处理 3.使用模板自动转义,定义过滤器,定义全局上下文处理器,Jinja2语法,包含,继承,定义宏 4.使用flask-wtf定义表单模型,字段类型,字段验证,视图处理表单,模板使用表单 5.使用flask-sqlachemy定义数据库模型,对数据进行增删查改,数据迁移 6.使用蓝图优化项目结构,实现微电影网站前台与后台业务逻辑 7.fla

Flask开发微电影网站(五)

后台管理页面是系统管理员登录后对网站进行管理的前端页面 后台登录页面,如下图所示 管理员登录后的页面,如下图所示 管理员登录后,在右上角显示的管理员信息,如下图所示 管理员登录后,在页面中间部分的左侧显示管理菜单 管理菜单包括控制面板,标签管理,电影管理,预告管理,会员管理,评论管理,收藏管理,日志管理,权限管理,角色管理,管理员管理等菜单,每个菜单下有子菜单进行细分管理控制 管理员可以使用菜单对网站进行管理 在上面的图片中,可以看到,后台管理页面的顶部部分都是一样的,所以可以把后台管理页面顶部

Flask开发微电影网站(六)

1. 后台管理登录功能实现 1.1 后台管理页面登录表单LoginForm 在app的admin目录下创建forms.py文件,用来保存admin蓝图中需要使用到的表单 from flask_wtf import FlaskForm from wtforms import StringField, PasswordField, SubmitField, FileField, TextAreaField, SelectField, SelectMultipleField from wtforms.

Flask构建微电影(二)

第三章.项目分析.搭建目录及模型设计 3.1.前后台项目目录分析 微电影网站 前台模块 后台模块 前台(home) 数据模型:models.py 表单处理:home/forms.py 模板目录:templates/home 后台(admin) 数据模型:models.py 表单处理:admin/forms.py 模板目录:templates/admin 静态文件:static 开始创建目录,如下: 3.2.蓝图构建项目目录 什么是蓝图? 一个应用中或跨用用制作应用组件和支持通用的模式 蓝图的作用

Flask开发接口(二)

Flask开发接口 在之前那篇直接操作数据库的基础上作出的改进,这个版本可能更加适合项目中的使用,同样实现俩个功能,增加和查询功能,基本机构如下: 操作步骤: 1.在app下,新建一个 __init__.py文件,这里是项目结构,在蓝本中定义路由地址 # coding=utf-8 from flask import Flask from flask_sqlalchemy import SQLAlchemy from config import config import sys reload(s

使用IntelliJ IDEA开发SpringMVC网站(二)框架配置

原文:使用IntelliJ IDEA开发SpringMVC网站(二)框架配置 摘要 讲解如何配置SpringMVC框架xml,以及如何在Tomcat中运行 目录[-] 文章已针对IDEA 15做了一定的更新,部分更新较为重要,请重新阅读文章并下载最新源码. 五.SpringMVC框架配置 1.web.xml配置 2.xxx-servlet.xml配置 转载请注明出处:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生). 注:此文承接上一文:使用IntelliJ IDEA开发Spring

使用flask开发网站后端

Flask 是一个用于 Python 的微型网络开发框架,可以用于快速的搭建一个小型的网站. 我的搜索引擎:http://www.abelkhan.com 就是基于flask开发 一个flask的Hello World from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run()

LNMP系列网站零基础开发记录(二)

[目录] 扯淡吹逼之开发前奏 Django 开发环境搭建及配置 Bootstrap 前端页面开发 Django app开发 Django 站点管理 Python 简易爬虫开发 Nginx&uWSGI 服务器配置 ...  二.Django 开发环境搭建及配置  1. 开发环境 开发环境依然是Windows,可以开发的django的IDE较多,我只使用过以下几种 Eclipse  免费IDE,需要下载pydev插件,代码提示功能不错 Visual Studio 需要下载PTVS,结合了VS强大的编

使用IntelliJ IDEA开发SpringMVC网站(二)

注:此文承接上一文:使用IntelliJ IDEA开发SpringMVC网站 五.SpringMVC框架配置 进行完上面的配置,那就说明现在基本的开发环境已经搭建好了,现在要开始进行SpringMVC的网站开发. 1.web.xml配置 打开src\main\webapp\WEB-INF\下的web.xml文件,稍微更新一下web.xml的版本,可以支持更高级的一些语法,如下: <?xml version="1.0" encoding="UTF-8"?>