flask-InfoNews

flask项目 专栏收录该内容
0 篇文章 0 订阅

主函数

from flask import session
from flask_script import Manager
from flask_migrate import MigrateCommand
from info import create_app

# 创建web应用
app = create_app("dev")

# 创建管理器
mgr = Manager(app)

# 使用管理器生成迁移命令
mgr.add_command("mc", MigrateCommand)

if __name__ == '__main__':
    mgr.run()

项目配置

from datetime import timedelta
from redis import Redis


# 定义配置类来封装配置信息
class Config:
    DEBUG = True  # 设置调试模式
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/info22"  # 数据库连接地址
    SQLALCHEMY_TRACK_MODIFICATIONS = False  # 是否追踪数据库变化
    REDIS_HOST = "127.0.0.1"  # redis的连接地址  将自定义的配置也封装到Config类中
    REDIS_PORT = 6379
    SESSION_TYPE = "redis"  # 设置session存储的方式  redis 性能好,方便设置过期时间
    SESSION_REDIS = Redis(host=REDIS_HOST, port=REDIS_PORT)  # 设置Redis连接对象, 组件会使用该对象将session数据保存到redis中
    SESSION_USE_SIGNER = True  # 设置sessionid进行加密
    SECRET_KEY = "test"  # 设置sessionid的秘钥
    PERMANENT_SESSION_LIFETIME = timedelta(days=7)  # 设置session过期时间 组件默认支持设置过期时间

# 配置信息子类化
class DevelopmentConfig(Config):  # 开发环境配置信息
    DEBUG = True  # 设置调试模式

class ProductionConfig(Config):  # 生产环境配置信息
    DEBUG = False


# 让配置字典来记录配置类型和配置类的对应关系
config_dict = {
    "dev": DevelopmentConfig,
    "pro": ProductionConfig
}

创建应用以及框架初始化

from flask import Flask
from flask_migrate import Migrate
from flask_session import Session
from flask_sqlalchemy import SQLAlchemy
from redis import Redis

from config import config_dict


# 定义全局变量, 记录数据库连接对象, 以便其他文件可以使用
db = None  # type: SQLAlchemy
rs = None  # type: Redis


# 封装应用的创建过程  工厂函数: 让外界提供物料, 在函数内部封装对象的创建过程
def create_app(config_type):

    config_class = config_dict[config_type]

    # 创建web应用
    app = Flask(__name__)

    # 从对象中加载配置
    app.config.from_object(config_class)

    # 声明全局变量
    global db, rs

    # 创建msql连接对象
    db = SQLAlchemy(app)
    # 创建redis连接对象
    rs = Redis(host=config_class.REDIS_HOST, port=config_class.REDIS_PORT)

    # 初始化session存储对象
    Session(app)

    # 初始化迁移器
    Migrate(app, db)

    # 注册蓝图对象
    # 为了避免导入错误, 对于只使用一次的内容, 在使用前才导入
    from info.home import home_blu
    app.register_blueprint(home_blu)

    return app

使用蓝图创建视图函数

from flask import Blueprint

# 创建蓝图对象
home_blu = Blueprint("home", __name__)

from .views import *`在这里插入代码片`
from info.home import home_blu
from info import rs

# 使用蓝图来注册路由
@home_blu.route('/')
def index():
    rs.set("name", "zs")
    return "index"
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:书香水墨 设计师:CSDN官方博客 返回首页

打赏作者

潜渊ss

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值