Flask开发-留言板——包组织代码——2021.5.12

Posted Blockchain_Key

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask开发-留言板——包组织代码——2021.5.12相关的知识,希望对你有一定的参考价值。

一丶程序包组件和结构

在这里插入图片描述

二丶配置文件(sayhello/settings.py)

import os
import sys

from sayhello import app

# SQLite URI compatible
WIN = sys.platform.startswith('win')
if WIN:
    prefix = 'sqlite:///'
else:
    prefix = 'sqlite:'

dev_db = prefix + os.path.join(os.path.dirname(app.root_path), 'data.db')

SECRET_KEY = os.getenv('SECRET_KEY', 'secret string')
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_DATABASE_URI = os.getenv('DATABASE_URI', dev_db)

os.path.dirname(app.root_path)获取上层目录
app.root_path属性存储程序实例所在的路劲
数据库URL和密钥都会首先从环境变量获取

三丶创建程序实例(init.py)

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
# from flask_bootstrap import Bootstrap
# from flask_moment import Moment


app = Flask('sayhello')
app.config.from_pyfile('settings.py')
app.jinja_env.trim_blocks = True
app.jinja_env.lstrip_blocks = True

db = SQLAlchemy(app)
# bootstrap = Bootstrap(app)
# moment = Moment(app)

from sayhello import views, errors, commands

启动程序时,首先被执行的是构造文件__init__,py
但注册在程序实例上的各种处理程序(views.py errors.py)均放在其他脚本中,如果不被执行,就不会被注册在程序中,程序就无法正常运行
为了使相关模板的函数和程序实例关联起来,需要在最后一行导入相关的模块
构造函数中导入模块,不需要注明模块路劲,直接名称导入即可

四丶FLASK_APP环境变量

给.flaskenv中的环境变量重新赋值

FLASK_APP=sayhello

以上是关于Flask开发-留言板——包组织代码——2021.5.12的主要内容,如果未能解决你的问题,请参考以下文章

Flask实战-留言板-使用Bootstrap-Flask简化页面编写

Flask实战-留言板-使用Faker生成虚拟数据

Flask从入门到精通之大型程序的结构一

我的flask钉钉企业内部开发机器人

flask实战-个人博客-使用类组织配置

flask实战-个人博客-使用类组织配置