微电影网站
前台(home)
后台(admin)
开始创建目录,如下:
什么是蓝图?
一个应用中或跨用用制作应用组件和支持通用的模式
蓝图的作用
如何使用蓝图构建项目目
(1)home/__init__.py
#coding:utf-8
__author__ = 'derek'
from flask import Blueprint
home = Blueprint("home",__name__)
import app.home.views
(2)admin/__init__.py
#coding:utf-8
__author__ = 'derek'
from flask import Blueprint
admin = Blueprint("admin",__name__)
import app.admin.views
(3)home/views.py
#coding:utf-8
__author__ = 'derek'
from . import home #导入蓝图
@home.route("/")
def index():
return "<h1 style='color:green'>this is home</h1>"
(4)admin/views.py
#coding:utf-8
__author__ = 'derek'
from . import admin #导入蓝图
@admin.route("/")
def index():
return "<h1 style='color:red'>this is admin</h1>"
(5)app/__init__.py
#coding:utf-8
__author__ = 'derek'
from flask import Flask
app = Flask(__name__)
app.debug = True #调式模式
#导入蓝图对象,然后起个别名,易于区分
from app.home import home as home_blueprint
from app.admin import admin as admin_blueprint
#注册蓝图
app.register_blueprint(home_blueprint)
app.register_blueprint(admin_blueprint,url_prefix = "/admin") #url_prefix添加前缀
(6)app/manage.py
#coding:utf-8
__author__ = 'derek'
from app import app # 导入的app是app/__init__中实例化的对象:app = Flask(__name__)
if __name__ == '__main__':
app.run()
(7)运行项目(manage,py)
home
admin
(1)安装flask-sqlalchemy
pip install -i https://pypi.douban.com/simple --trusted-host pypi.douban.com flask-sqlalchemy
(2)app/models.py
表结构的设计
#coding:utf-8
__author__ = 'derek'
from datetime import datetime
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import pymysql
app = Flask(__name__)
#连接mysql数据库(用户名、密码、ip、端口和数据库名字)
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:123456@127.0.0.1:3306/movie"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
db = SQLAlchemy(app)
#会员
class User(db.Model): #继承db.Model
__tablename__ = "user" #数据库中表显示的名字
id = db.Column(db.Integer,primary_key=True) #编号,int类型,主键
name = db.Column(db.String(100),unique=True) #昵称,字符串类型(长度100),唯一
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.now) #添加时间
uuid = db.Column(db.String(255),unique=True) #唯一标识符
userlogs = db.relationship('UserLog',backref='user') #会员日志外键关系
def __repr__(self):
return "<User %r>"%self.name
#会员登录日志
class UserLog(db.Model):
__tablename__ = "userlog"
id = db.Column(db.Integer,primary_key=True) #编号
#跟User表的id外键关联,类名小写
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
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
#电影
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) #添加时间
def __repr__(self):
return "<Movie %r>"%self.title
#电影上映预告
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
#评论
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
#电影收藏
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.now) # 添加时间
def __repr__(self):
return "Moviecol %r" % self.id
要对应的跟User和Movie关联起来
class User(db.Model):
.
.
.
comments = db.relationship("Comment",backref="user") #评论外键关系关联
moviecols = db.relationship("Moviecol",backref="user") #电影收藏外键关系关联
class Movie(db.Model):
'
'
'
comments = db.relationship("Comment",backref="movie" ) #评论外键关系关联
moviecols = db.relationship("Moviecol",backref="movie" ) #电影收藏外键关系关联
#权限
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(255),unique=True) #地址
addtime = db.Column(db.DateTime,index=True,default=datetime.now) #添加时间
def __repr__(self):
return "<Auth %r>"%self.name
#角色
class Role(db.Model):
__tablename__ = "role"
id = db.Column(db.Integer,primary_key=True) #编号
name = db.Column(db.String(100),unique=True) #名称
auths = db.Column(db.String(600)) #权限列表
addtime = db.Column(db.DateTime,index=True,default=datetime.now) #添加时间
def __repr__(self):
return "<Role %r>"%self.name
#管理员
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.id
#管理员登录日志
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
#操作日志
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
(1)创建数据库
create database derek default charset utf8 collate utf8_general_ci;
(2)安装pymysql
pip install pymysql
(3)在models.py下面加上代码,然后运行,就生成到数据库里面了
if __name__ == '__main__':
db.create_all()
#coding:utf-8
__author__ = 'derek'
import pymysql
from flask import Flask
from datetime import datetime
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
#连接mysql数据库(用户名、密码、ip、端口和数据库名字)
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:123456@127.0.0.1:3306/movie"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
db = SQLAlchemy(app)
#会员
class User(db.Model): #继承db.Model
__tablename__ = "user" #数据库中表显示的名字
id = db.Column(db.Integer,primary_key=True) #编号,int类型,主键
name = db.Column(db.String(100),unique=True) #昵称,字符串类型(长度100),唯一
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.now) #添加时间
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
#会员登录日志
class UserLog(db.Model):
__tablename__ = "userlog"
id = db.Column(db.Integer,primary_key=True) #编号
#跟User表的id外键关联,类名小写
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
#标签
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
#电影
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
#电影上映预告
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
#评论
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
#电影收藏
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.now) # 添加时间
def __repr__(self):
return "Moviecol %r" % self.id
#权限
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(255),unique=True) #地址
addtime = db.Column(db.DateTime,index=True,default=datetime.now) #添加时间
def __repr__(self):
return "<Auth %r>"%self.name
#角色
class Role(db.Model):
__tablename__ = "role"
id = db.Column(db.Integer,primary_key=True) #编号
name = db.Column(db.String(100),unique=True) #名称
auths = db.Column(db.String(600)) #权限列表
addtime = db.Column(db.DateTime,index=True,default=datetime.now) #添加时间
def __repr__(self):
return "<Role %r>"%self.name
#管理员
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.id
#管理员登录日志
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
#操作日志
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
(4)查看数据库
show databases;
user movie;
show tables;
(5)添加一个角色
if __name__ == '__main__':
# db.create_all()
role = Role(
name="超级管理员",
auths=""
)
db.session.add(role)
db.session.commit()
取数据库查看
desc role;
select * from role;
(6)添加一个管理员
密码保存的时候采用hash加密
if __name__ == '__main__':
# db.create_all()
#添加角色
# role = Role(
# name="超级管理员",
# auths=""
# )
# db.session.add(role)
# db.session.commit()
#添加管理员
#对密码加密保存
from werkzeug.security import generate_password_hash
admin = Admin(
name="derek",
pwd=generate_password_hash("123456"),
is_super=0,
role_id=1
)
db.session.add(admin)
db.session.commit()
查看
select * from admin\G;
上一篇:Flask构建微电影(一)
以前总觉得别人学习到十二点是个很了不起的事......刚博客写完后,看了下时间.......