背景:
Flask不同于Django,Django在创建程序时自动得到必要的目录文件,而Flask则只有一个空文件夹,所以关于Flask项目的目录我们需要自行配置。
Flask应用目录:
首先,Flask 区分工程目录和项目目录,主要是为了更好地组织和管理项目的不同部分。
- 工程目录通常包含一些通用的配置、工具脚本、环境设置等,有助于整体项目的构建、部署和维护。
- 项目目录则专注于具体的应用逻辑,包括视图函数、模型、模板等与业务功能直接相关的代码。
这样的划分有助于清晰地组织和管理项目的不同方面,使得开发和维护更加高效和有条理。但是Flask 框架没有强制要求工程目录和项目目录的区分。
首先利用pycharm创建一个工程project,如下:flaskdemo2,在工程目录下创建项目:app,Flask应用目录结构,如下:
备注:还可以在项目文件夹下面再增加个目录(和视图函数模块文件夹同一层级),用来存放其它自定义函数、方法
举例如下:
文件示范:
1、项目视图formDis.py示例
from flask import Flask, render_template
#form = Blueprint('formDis', __name__)
form = Blueprint('formDis111', __name__, url_prefix="/news")
#实例化蓝图对象
#两个必要参数':
# 第一个参数:蓝图名字,自定义'
# 第二个参数:__name__'蓝图所在的模块或者包,一般为'__name__'变量;
# 第三个参数:url_prefix,非必填,,表示在该蓝图下,所有的url地址访问路径中都要加上xxx路径,即域名/xxx/路由
@form.route('/formplay') #在蓝图对象上进行操作,路由,指定静态文件夹,注册模版过滤器
def index():
# 往模板中传入的数据
my_str = 'Hello Word'
my_int = 10
my_array = [3, 4, 2, 1, 7, 9]
my_dict = {
'name': 'xiaoming',
'age': 18
}
return render_template('hello.html',
my_str=my_str,
my_int=my_int,
my_array=my_array,
my_dict=my_dict
)
2、功能模块文件夹app下的_init_.py文件示例
from flask import Flask
app = Flask(__name__)
from .modelViews001.user import us #引入视图中创建的蓝图对象 .表示当前文件所在目录层级
from .modelViews002.order import ord #引入视图中创建的蓝图对象 .表示当前文件所在目录层级
from .modelViews002.formDis import form #引入视图中创建的蓝图对象 .表示当前文件所在目录层级
app.register_blueprint(us) #注册引入的蓝图实例
app.register_blueprint(ord) #注册引入的蓝图实例
app.register_blueprint(form) #注册引入的蓝图实例
3、项目启动文件manage.py示例
from app import app #前面app指的是项目文件夹app,后面app指的是app文件夹下面的初始化文件__init__.py中创建的实例,实例名app
if __name__ == '__main__':
app.run(host="0.0.0.0",port=5569) #若调试,可考虑开启debug模式,修改代码后服务自动重启,使修改生效,方便调试,生产环境
#要关闭如:app.run(host='0.0.0.0',port=5000,debug=True)
4、模块文件requirements.txt 模块文件示例
alembic==0.9.6
blinker==1.4
certifi==2017.11.5
chardet==3.0.4
click==6.7
DBUtils==1.2
docopt==0.6.2
Flask==0.12.2
Flask-Migrate==2.1.1
Flask-Script==2.0.6
Flask-Session==0.3.1
Flask-SQLAlchemy==2.3.2
idna==2.6
itsdangerous==0.24
Jinja2==2.10
Mako==1.0.7
MarkupSafe==1.0
pipreqs==0.4.9
PyMySQL==0.8.0
python-dateutil==2.6.1
python-editor==1.0.3
PyTyrion==1.0.1
requests==2.18.4
six==1.11.0
SQLAlchemy==1.2.0
urllib3==1.22
Werkzeug==0.14.1
WTForms==2.1
xlrd==1.1.0
yarg==0.1.9