微電影網站html
前臺(home)python
後臺(admin)mysql
開始建立目錄,以下:sql
什麼是藍圖?數據庫
一個應用中或跨用用製做應用組件和支持通用的模式flask
藍圖的做用session
將不一樣的功能模塊化app
如何使用藍圖構建項目目ide
(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構建微電影(一)