6-1 注册管理员到数据库

来源:7-1 .管理员登录

进击的路人甲

2017-08-07

http://szimg.mukewang.com/598854cb0001892513660736.jpg


# -*- coding:utf-8 -*-
from datetime import datetime
from app import db


class User(db.Model):
   """会员"""
   __tablename__ = "user"
   __table_args__ = {"useexisting": True}
   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 {}>".format(self.name)


class UserLog(db.Model):
   """会员登陆日志"""
   __tablename__ = "userlog"
   __table_args__ = {"useexisting": True}
   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.utcnow)  # 登陆时间

   def __repr__(self):
       return "<UserLog {}>".format(self.id)


class Tag(db.Model):
   """标签"""
   __tablename__ = "tag"
   __table_args__ = {"useexisting": True}
   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.utcnow)  # 添加时间
   movies = db.relationship("Movie", backref="tag")  # 标签

   def __repr__(self):
       return "<Tag {}>".format(self.name)


class Movie(db.Model):
   """影片"""
   __tablename__ = "movie"
   __table_args__ = {"useexisting": True}
   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 {}>".format(self.title)


class Preview(db.Model):
   """上映预告"""
   __tablename__ = "preview"
   __table_args__ = {"useexisting": True}
   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.utcnow)  # 添加时间

   def __repr__(self):
       return "<Preview {}>".format(self.title)


class Comment(db.Model):
   __tablename__ = "comment"
   __table_args__ = {"useexisting": True}
   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"
   __table_args__ = {"useexisting": True}
   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.utcnow)  # 添加时间

   def __repr__(self):
       return "<Moviecol {}>".format(self.id)


class Auth(db.Model):
   """权限"""
   __table_args__ = {"useexisting": True}
   id = db.Column(db.Integer, primary_key=True)  # 编号
   name = db.Column(db.String(25), unique=True)  # 名称
   url = db.Column(db.String(255), unique=True)  # 地址
   addtime = db.Column(db.DateTime, index=True, default=datetime.utcnow)

   def __repr__(self):
       return "<Auth {}>".format(self.name)


class Role(db.Model):
   """角色"""
   __table_args__ = {"useexisting": True}
   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.utcnow)
   admins = db.relationship("Admin", backref="role")  # 管理员外键

   def __repr__(self):
       return "<Role {}>".format(self.name)


class Admin(db.Model):
   """管理员"""
   __tablename__ = "admin"
   __table_args__ = {"useexisting": True}
   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)
   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 {}>".format(self.name)


class Adminlog(db.Model):
   """管理员登陆日志"""
   __tablename__ = "adminlog"
   __table_args__ = {"useexisting": True}
   id = db.Column(db.Integer, primary_key=True)  # 编号
   admin_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.utcnow)  # 登陆时间

   def __repr__(self):
       return "<AdminLog {}>".format(self.id)


class Oplog(db.Model):
   """管理员操作日志"""
   __tablename__ = "oplog"
   __table_args__ = {"useexisting": True}
   id = db.Column(db.Integer, primary_key=True)  # 编号
   admin_id = db.Column(db.Integer, db.ForeignKey("user.id"))  # 所属管理员
   ip = db.Column(db.String(100))  # 登陆IP
   reason = db.Column(db.String(600))  # 操作原因
   addtime = db.Column(db.DateTime, index=True, default=datetime.utcnow)  # 登陆时间

   def __repr__(self):
       return "<OpLog {}>".format(self.id)


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="imoocmovie",
       pwd=generate_password_hash("imoocmovie"),
       is_super=0,
       role_id=1
   )
   db.session.add(admin)
   db.session.commit()




__init__.py文件内容:

# -*- coding:utf-8 -*-
from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
import pymysql


app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:mysql@localhost/movie"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
app.config["SECRET_KEY"] = "a825917953e94191801fb10b7d92151a"
app.debug = True
db = SQLAlchemy(app)

from app.home import home as home_bluepeint
from app.admin import admin as admin_bluepeint

app.register_blueprint(home_bluepeint)
app.register_blueprint(admin_bluepeint, url_prefix="/admin")


@app.errorhandler(404)
def page_not_found(error):
   return render_template("home/404.html"), 404



写回答

2回答

rustgopy

2017-08-07

亲,如果有困难,把报错的截图贴到问答区,老师为你解答!

0
12
欲影
老师,我也遇到这个问题了,很长时间了,怎么解决呢?
2017-09-14
共12条回复

欲影

2017-09-12

我也是这里出问题了,能请教下怎么解决的么?

0
0

Python Flask 构建微电影视频网站

Python 最好用轻量级框架,让你轻松胜任 Python Web 工程师

683 学习 · 663 问题

查看课程