Flask完整配置流程

我们不应该将所有的配置都写在manage.py这一个文件夹中,当我们的代码足够多的时候,会发现mang
e.py的代码会显得复杂起来,并且看起来比较乱,所以我们需要将不同种类的代码分别放在不同的.p
文件中.

在manage.py中只需要留使用Manageer管理app和启动run()就足够了

from flask_script import Manager

from utils.apps import create_app

app = create_app()


# 使用Manager管理app
manage = Manager(app=app)

if __name__ == '__main__':
    # 启动run()
    manage.run()
在utils中创建一个apps.py文件夹,用来初始化Flask对象、配置、注册蓝图、以及初始化各种第三方
库
from flask import Flask
from app.house_views import house_blueprint
from app.order_views import order_blueprint
from app.user_views import user_blueprint
from utils.config import Config
from utils.functions import init_ext
from utils.settings import TEMPLATE_DIR, STATIC_DIR

def create_app():

    # 初始化Flask对象
    app = Flask(__name__,
                static_folder=STATIC_DIR,
                template_folder=TEMPLATE_DIR)

    # 配置
    app.config.from_object(Config)
    
    # 初始化各种第三方库
    init_ext(app)

    # 注册蓝图
    app.register_blueprint(blueprint=user_blueprint, url_prefix='/user')
    app.register_blueprint(blueprint=house_blueprint, url_prefix='/house')
    app.register_blueprint(blueprint=order_blueprint, url_prefix='/order')

   

    return app
可以发现,我们配置和初始化第三方库也可以单独写在一个.py文件汇总,当需要使用的时候调用就可
以了,这使得我们的逻辑变得更清晰,也让页面看起来简洁

在function.py文件中定义一个方法,方法的内容就是初始化各种第三方库

def init_ext(app):
    # 绑定app和db
    db.init_app(app)

    # 绑定session和app
    sess = Session()
    sess.init_app(app)

创建config文件,将有关配置的代码写在其中

from utils.functions import get_mysqldb_url, get_redisdb_url


class Config():
    # 配置数据库
    SQLALCHEMY_DATABASE_URI = get_mysqldb_url()
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    # 配置session
    SESSION_TYPE = 'redis'
    SECRET_REDIS = get_redisdb_url()

关于的数据库和redis的配置也是可以进行进一步的细分,我们可以在settings中写关于配置的一些基
础数据,然后在function.py中定义一个方法,返回想要的整合数据

settings中

import os

# 基础路径
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# templates路径
TEMPLATE_DIR = os.path.join(BASE_DIR, 'templates')
# static路径
STATIC_DIR = os.path.join(BASE_DIR, 'static')
# media路径
MEDIA_DIR = os.path.join(STATIC_DIR, 'media')
# 保存图片的路径
UPLOAD_DIR = os.path.join(MEDIA_DIR, 'upload')
# 数据库配置
MYSQL_DATABASE = {
    'DRIVER': 'mysql',
    'DH': 'pymysql',
    'ROOT': 'root',
    'PASSWORD': '123456',
    'HOST': '127.0.0.1',
    'PORT': 3306,
    'NAME': 'aj'
}
REDIS_DATABASE = {
    'HOST': '127.0.0.1',
    'PORT': 6379
}

function.py中

from utils.settings import MYSQL_DATABASE, REDIS_DATABASE


def get_mysqldb_url():
    DRIVER = MYSQL_DATABASE['DRIVER']
    DH = MYSQL_DATABASE['DH']
    ROOT = MYSQL_DATABASE['ROOT']
    PASSWORD = MYSQL_DATABASE['PASSWORD']
    HOST = MYSQL_DATABASE['HOST']
    PORT = MYSQL_DATABASE['PORT']
    NAME = MYSQL_DATABASE['NAME']
    return '{}+{}://{}:{}@{}:{}/{}'.format(DRIVER, DH, ROOT, PASSWORD, HOST, PORT, NAME)


def get_redisdb_url():
    HOST = REDIS_DATABASE['HOST']
    PORT = REDIS_DATABASE['PORT']
    return redis.Redis(host=HOST, port=PORT)

注意:

当进行配置以后我们的static和templates不在同一目录下,执行程序时网页会提示找不到html文件,
所以需要进行以下配置
 # 初始化Flask对象
    app = Flask(__name__,
                static_folder=STATIC_DIR,
                template_folder=TEMPLATE_DIR)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值