记录:创建个人博客网站(基于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