zoukankan      html  css  js  c++  java
  • Flask搭建微电影网站

    一、项目环境

    Python3.6

    Flask 0.12.2

    二、项目目录分析

     

    三、创建项目

    1. 项目目录结构

    2. 使用蓝图优化目录结构

    (1). 什么是蓝图?

      一个应用中或跨应用制作应用组件和支持通用的模式

    (2). 蓝图的作用?

    • 将不同的功能模块化
    • 构建大型应用
    • 优化项目结构
    • 增强可读性、易于维护

    (3). 蓝图构建项目目录

    a. 定义蓝图(app/admin/__init__.py)

    from flask import Blueprint
    
    admin = Blueprint('admin', __name__)
    
    import app.admin.views

    b. 注册蓝图(app/__init__.py)

    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')

     c. 调用蓝图(app/admin/views.py)

    from . import admin
    
    
    @admin.route('/')
    def index():
        return 'index of amdin'

     四、具体功能实现

    1. 会员及会员登录日志数据模型设计

    (1). 安装flask-sqlalchemy

    pip install flask-sqlalchemy

    (2). 定义数据库连接

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:123456@127.0.0.1:3306/movie'
    
    db = SQLAlchemy(app)

    (3). 创建对象映射关系

    # 会员
    class User(db.Model):
        __tablename__ = 'user'
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(32), unique=True, nullable=False)
        pwd = db.Column(db.String(16))
        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))
        addtime = db.Column(db.DateTime, index=True, default=datetime.utcnow)
        uuid = db.Column(db.String(255), unique=True)
    
        userlog = db.relationship('UserLog', backref='user')
    
        def __repr__(self):
            return '<User %r>' % self.name
    
    
    # 会员登录日志
    class UserLog():
        __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(15))
        addtime = db.Column(db.DateTime, index=True, default=datetime.utcnow)
    
        def __repr__(self):
            return '<UserLog %r>' % self.id
    View Code

    2. 标签、电影、上映预告数据模型设计

    # 标签
    class Tag(db.Model):
        id = db.Column(db.Integer, primary_key=True)  # 编号
        name = db.Column(db.String(64), unique=True, nullable=False)  # 标签名
        addtime = db.Column(db.DateTime, index=True, default=datetime.utcnow)  # 添加时间
    
        movies = db.relationship('Movie', backref='tag')  # 与电影的关联
    
        def __repr__(self):
            return '<Tag %r>' % self.name
    
    
    # 电影
    class Movie(db.Model):
        id = db.Column(db.Integer, primary_key=True)  # 编号
        title = db.Column(db.String(64), unique=True, nullable=False)  # 电影名
        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)  # 星级
        play_num = db.Column(db.BigInteger)  # 播放量
        comment_num = db.Column(db.BigInteger)  # 评论量
        tag_id = db.Column(db.Integer, db.ForeignKey('tag.id'))  # 所属标签
        area = db.Column(db.String(64))  # 上映区域
        release_time = db.Column(db.DateTime)  # 上映时间
        length = db.Column(db.String(32))  # 时长
        addtime = db.Column(db.DateTime, index=True, default=datetime.utcnow)  # 添加时间
    
        def __repr__(self):
            return '<Movie %r>' % self.title
    
    
    # 上映预告
    class Preview(db.Model):
        id = db.Column(db.Integer, primary_key=True)  # 编号
        title = db.Column(db.String(64), unique=True, nullable=False)
        logo = db.Column(db.String(255), unique=True)  # 封面
        addtime = db.Column(db.DateTime, index=True, default=datetime.utcnow)  # 添加时间
    
        def __repr__(self):
            return '<Preview %r>' % self.title
  • 相关阅读:
    中文词频统计及词云制作 25
    实验一 DOS实验 25
    字符串练习 25
    Python、循环的练习 25
    用requests库和BeautifulSoup4库爬取新闻列表 25
    爬取新闻列表 25
    Mockito使用总结
    20121116
    20121123
    20121115
  • 原文地址:https://www.cnblogs.com/qq2233297039/p/8971134.html
Copyright © 2011-2022 走看看