日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Flask构建微电影(二)

發(fā)布時間:2023/11/29 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flask构建微电影(二) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

第三章、項目分析、搭建目錄及模型設(shè)計

3.1.前后臺項目目錄分析

微電影網(wǎng)站

  • 前臺模塊
  • 后臺模塊

?前臺(home)

  • 數(shù)據(jù)模型:models.py
  • 表單處理:home/forms.py
  • 模板目錄:templates/home

?后臺(admin)

  • 數(shù)據(jù)模型:models.py
  • 表單處理:admin/forms.py
  • 模板目錄:templates/admin
  • 靜態(tài)文件:static

開始創(chuàng)建目錄,如下:

?

?

3.2.藍圖構(gòu)建項目目錄

什么是藍圖?

一個應(yīng)用中或跨用用制作應(yīng)用組件和支持通用的模式

藍圖的作用

  • 將不同的功能模塊化

  • 構(gòu)建大型應(yīng)用
  • 優(yōu)化項目結(jié)構(gòu)
  • 增強可讀性,易于維護

如何使用藍圖構(gòu)建項目目

(1)home/__init__.py

#coding:utf-8 __author__ = 'derek'from flask import Blueprinthome = Blueprint("home",__name__)import app.home.views

(2)admin/__init__.py

#coding:utf-8 __author__ = 'derek'from flask import Blueprintadmin = Blueprint("admin",__name__)import app.admin.views

(3)home/views.py

#coding:utf-8 __author__ = 'derek'from . import home #導(dǎo)入藍圖 @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 #導(dǎo)入藍圖 @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 #調(diào)式模式#導(dǎo)入藍圖對象,然后起個別名,易于區(qū)分 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 # 導(dǎo)入的app是app/__init__中實例化的對象:app = Flask(__name__)if __name__ == '__main__':app.run()

(7)運行項目(manage,py)

home

admin

3.3.會員及會員登錄日志數(shù)據(jù)模型設(shè)計

?(1)安裝flask-sqlalchemy

pip install -i https://pypi.douban.com/simple --trusted-host pypi.douban.com flask-sqlalchemy

?(2)app/models.py

? ??Flask-SQLAlchemy 配置

?表結(jié)構(gòu)的設(shè)計

#coding:utf-8 __author__ = 'derek' from datetime import datetime from flask import Flask from flask_sqlalchemy import SQLAlchemy import pymysql
app
= Flask(__name__) #連接mysql數(shù)據(jù)庫(用戶名、密碼、ip、端口和數(shù)據(jù)庫名字) app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:123456@127.0.0.1:3306/movie" app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = Truedb = SQLAlchemy(app)#會員 class User(db.Model): #繼承db.Model__tablename__ = "user" #數(shù)據(jù)庫中表顯示的名字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) #唯一標(biāo)識符userlogs = db.relationship('UserLog',backref='user') #會員日志外鍵關(guān)系def __repr__(self):return "<User %r>"%self.name#會員登錄日志 class UserLog(db.Model):__tablename__ = "userlog"id = db.Column(db.Integer,primary_key=True) #編號#跟User表的id外鍵關(guān)聯(lián),類名小寫user_id = db.Column(db.Integer,db.ForeignKey('user.id')) #所屬會員ip = db.Column(db.String(100)) #登錄ipaddtime = db.Column(db.DateTime,index=True,default=datetime.now) #登錄時間def __repr__(self):return "<UserLog %r>"%self

3.4.標(biāo)簽、電影、上映預(yù)告數(shù)據(jù)模型設(shè)

class Tag(db.Model):__tablename__ = "tag"id = db.Column(db.Integer,primary_key=True) #編號name = db.Column(db.String(100),unique=True) #標(biāo)題addtime = db.Column(db.DateTime,index=True,default=datetime.now) #添加時間movies = db.relationship("Movie",backref="tag") #電影外鍵關(guān)系關(guān)聯(lián)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) #標(biāo)題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) #評論數(shù)tag_id = db.Column(db.Integer,db.ForeignKey('tag.id')) #所屬標(biāo)簽area = db.Column(db.String(255)) #上映地區(qū)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#電影上映預(yù)告 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

?

3.5.評論及收藏電影數(shù)據(jù)模型設(shè)計

#評論 class Comment(db.Model):__tablename__ = "comment"id = db.Column(db.Integer,primary_key=True) #編號content = db.Column(db.Text) #內(nèi)容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

?要對應(yīng)的跟User和Movie關(guān)聯(lián)起來

class User(db.Model): ...comments = db.relationship("Comment",backref="user") #評論外鍵關(guān)系關(guān)聯(lián)moviecols = db.relationship("Moviecol",backref="user") #電影收藏外鍵關(guān)系關(guān)聯(lián) class Movie(db.Model):' ' ' comments = db.relationship("Comment",backref="movie" ) #評論外鍵關(guān)系關(guān)聯(lián)moviecols = db.relationship("Moviecol",backref="movie" ) #電影收藏外鍵關(guān)系關(guān)聯(lián)

?

3.6.權(quán)限及角色數(shù)據(jù)模型設(shè)計

#權(quán)限 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)) #權(quán)限列表addtime = db.Column(db.DateTime,index=True,default=datetime.now) #添加時間def __repr__(self):return "<Role %r>"%self.name

?

3.7.管理員、登錄日志、操作日志數(shù)據(jù)模型設(shè)計

#管理員 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') #管理員登錄日志外鍵關(guān)系關(guān)聯(lián)oplogs = db.relationship("Oplog",backref='admin') #管理員操作日志外鍵關(guān)系關(guān)聯(lián)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)) #登錄ipaddtime = 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)) #登錄ipreason = db.Column(db.String(600)) #操作原因addtime = db.Column(db.DateTime, index=True, default=datetime.now) #登錄時間def __repr__(self):return "Oplog %r" % self.id

?

3.8.生成數(shù)據(jù)庫表

(1)創(chuàng)建數(shù)據(jù)庫

create database derek default charset utf8 collate utf8_general_ci;

(2)安裝pymysql

pip install pymysql

(3)在models.py下面加上代碼,然后運行,就生成到數(shù)據(jù)庫里面了

if __name__ == '__main__':db.create_all() #coding:utf-8 __author__ = 'derek'import pymysql from flask import Flask from datetime import datetimefrom flask_sqlalchemy import SQLAlchemyapp = Flask(__name__) #連接mysql數(shù)據(jù)庫(用戶名、密碼、ip、端口和數(shù)據(jù)庫名字) app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:123456@127.0.0.1:3306/movie" app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = Truedb = SQLAlchemy(app)#會員 class User(db.Model): #繼承db.Model__tablename__ = "user" #數(shù)據(jù)庫中表顯示的名字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) #唯一標(biāo)識符userlogs = db.relationship('UserLog',backref='user') #會員日志外鍵關(guān)系comments = db.relationship("Comment",backref="user") #評論外鍵關(guān)系關(guān)聯(lián)moviecols = db.relationship("Moviecol",backref="user") #電影收藏外鍵關(guān)系關(guān)聯(lián)def __repr__(self):return "<User %r>"%self.name#會員登錄日志 class UserLog(db.Model):__tablename__ = "userlog"id = db.Column(db.Integer,primary_key=True) #編號#跟User表的id外鍵關(guān)聯(lián),類名小寫user_id = db.Column(db.Integer,db.ForeignKey('user.id')) #所屬會員ip = db.Column(db.String(100)) #登錄ipaddtime = db.Column(db.DateTime,index=True,default=datetime.now) #登錄時間def __repr__(self):return "<UserLog %r>"%self.id#標(biāo)簽 class Tag(db.Model):__tablename__ = "tag"id = db.Column(db.Integer,primary_key=True) #編號name = db.Column(db.String(100),unique=True) #標(biāo)題addtime = db.Column(db.DateTime,index=True,default=datetime.now) #添加時間movies = db.relationship("Movie",backref="tag") #電影外鍵關(guān)系關(guān)聯(lián)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) #標(biāo)題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) #評論數(shù)tag_id = db.Column(db.Integer,db.ForeignKey('tag.id')) #所屬標(biāo)簽area = db.Column(db.String(255)) #上映地區(qū)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" ) #評論外鍵關(guān)系關(guān)聯(lián)moviecols = db.relationship("Moviecol",backref="movie" ) #電影收藏外鍵關(guān)系關(guān)聯(lián)def __repr__(self):return "<Movie %r>"%self.title#電影上映預(yù)告 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) #內(nèi)容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#權(quán)限 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)) #權(quán)限列表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') #管理員登錄日志外鍵關(guān)系關(guān)聯(lián)oplogs = db.relationship("Oplog",backref='admin') #管理員操作日志外鍵關(guān)系關(guān)聯(lián)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)) #登錄ipaddtime = 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)) #登錄ipreason = 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所有代碼

(4)查看數(shù)據(jù)庫

show databases; user movie; show tables;

?

(5)添加一個角色

if __name__ == '__main__':# db.create_all() role = Role(name="超級管理員",auths="")db.session.add(role)db.session.commit()

取數(shù)據(jù)庫查看

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

查看數(shù)據(jù)庫

select * from admin\G;

?

上一篇:Flask構(gòu)建微電影(一)

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/derek1184405959/p/9038294.html

總結(jié)

以上是生活随笔為你收集整理的Flask构建微电影(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。