• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
leo130-blogs
博客园    首页    新随笔    联系   管理    订阅  订阅

记录:创建个人博客网站(基于FLASK)2.1搭建APP应用工厂

说明:本文记录了基于FLASK框架去创建一个简易的个人博客网站的详细步骤和其中遇到的问题。

2.1、 搭建APP应用工厂


# flaskr/__init__.py

from flask import Flask
import os

# 导入对象类的配置文件
from flaskr.settings import ProductionConfig,DevelopmentConfig,TestingConfig
from flaskr.db import initialize_db,init_app,bind_db
from flaskr.auth import bp_auth

def create_app()->Flask:
    """通过配置类来创建应用

    Returns:
        Flask: 创建的应用
    """
    # 创建应用
    app = Flask(__name__)

    # 根据环境来获取对应配置
    cfg = os.getenv('FLASK_ENV') or 'Development'
    print(f"current config env :{cfg}")
    
    # cfg = "testing"
    if cfg == "production":
        app.config.from_object(ProductionConfig)
    if cfg == "Development":
        app.config.from_object(DevelopmentConfig)
    if cfg == "testing":
        app.config.from_object(TestingConfig)   
    
    # 创建实例文件夹  
    try:
        os.makedirs(app.instance_path)
    except OSError:
        print("Initialize the file struction fail!")   
    
    
    init_app(app)
    initialize_db(app)
    

    # bind_db(app)
    # 注册用户蓝图
    app.register_blueprint(bp_auth)
    
    # 测试用的路由 测试路径localhost:port /test
    @app.route("/test")
    def test_page():
        return 'You get a flask web page'    
    
    return app

# 可通过在终端中输入:flask -- app flaskr run 来启动应用

在__init__.py文件中,创建了一个create_app的函数,该函数的作用是创建一个应用工厂,同时实现了以下内容。
①通过调用settings.py中的ProductionConfig、DevelopmentConfig、TestingConfig配置类三个对象,根据当前环境对选取对应的配置类。
②创建了一个实例文件夹instance为后续创建sqlite3数据库做好准备,但是本文没有创建sqllite数据库,而是采用flask_sqlalchemy模块,使用orm映射到Mysql数据库。
③注册了用户蓝图bp_blueprint和一个测试用的路由app.rout("/test")。
④注册了初始化数据库的命令(init_app)。

setting.py的文件如下:

# flaskr/settings.py
class Config:  
    SECRET_KEY = 'my-secret-key'  
    DEBUG = False
    TESTING = False  
    DATABASE_URI = 'sqlite:////tmp/test.db'  

    TEMPLATE_FOLDER = 'templates'
    
    # 其他配置...  

class DevelopmentConfig(Config):  
    DEBUG = True
    
    DATABASE_HOST = "127.0.0.1"  
    DATABASE_PORT =  3306
    DATABASE_USER =  "root"
    DATABASE_PWD =   "sanchez"
    DATABASE_DB =    "test_db"
    SQLALCHEMY_DATABASE_URI = f"mysql+pymysql://{DATABASE_USER}:{DATABASE_PWD}@localhost/{DATABASE_DB}"


    # 其他开发环境特有的配置...  

class ProductionConfig(Config):  
    # 生产环境特有的配置...
    pass

class TestingConfig(Config):
    # 测试环境特有的配置...
    TESTING = True
    pass

posted @ 2024-04-20 20:28  Sanchez023  阅读(59)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3