本文首发于公众号:Hunter后端
原文链接:Flask笔记一之项目搭建、配置项导入
这一篇开始介绍 Flask
系列笔记,这个系列笔记将和之前的 Django
笔记一样会从 Flask
的官方文档中提取一系列的知识点,整理成系列笔记。
这是 Flask 系列笔记的第一篇,本篇笔记介绍的是 Flask 项目的搭建以及配置项的导入,我们用到的 Python 的版本还是 3.8,用到的 Flask 的版本是 2.3.2。
pip3 install flask==2.3.2
接下来我们这里用 Pycharm
创建一个项目,我们命名为 flask_blog
,在其下文件夹为 app
,其下再创建一个 __init__.py
文件,当前的文件结构如下:
flask_blog
└── app
└── __init__.py
以下是我们本篇笔记目录:
在 __init__.py
中,我们写入以下代码:
from flask import Flask
def create_app():
app = Flask(__name__)
@app.route("/")
def hello():
return "hello world
"
return app
然后在 flask_blog/ 文件夹下执行下面的命令,运行 Flask:
flask run
看到输出下面的输出就说明项目已经启动起来了:
...
* Running on http://127.0.0.1:5000/
Press CTRL+C to quit
然后访问服务器 5000 端口就可以看到返回内容了。
在这里我们使用 @app.route()
指定路由,然后直接 return 一个 html 文本,我们在浏览器访问的时候就会自动渲染。
指定端口
不指定的话,Flask 运行自动使用 5000 端口,如果要指定其他端口,使用 --port 参数指定。
flask run --port=9898
允许其他地址访问
如果希望其他服务器访问的话,加上 --host=0.0.0.0
debug模式
如果是在开发阶段,可以加上 --debug
参数,会自动检测系统代码变化然后重启系统。
Flask 获取配置信息有几种方式,一种是从文件中获取,一种是从定义好的 dict 里获取。
从文件中获取配置
从文件里获取提供了几种方式:
app.config.from_object("app.config")
app.config.from_pyfile("./config.py")
我们在 app/ 文件夹下创建了一个 config.py 文件,其内容如下:
ABC = "123"
在执行完 from_object 或者 from_pyfile 操作之后,可以通过下面的操作获取到这些配置信息:
app.config.get("ABC")
从 dict 中获取配置
除了从文件中获取,我们还可以使用 from_mapping() 函数,将需要写入的配置放到 dict 里:
app.config.from_mapping({
"ABC": "123"
})
注意:我们从文件中或者从 dict 中获取的变量名称都应该是大写的,否则系统不会读入。
在实际开发中,我们可能需要区分开发环境和生产环境,并且根据不同的环境读取不同的环境变量,就这个问题,这里提供一个方案
在 app/
文件夹下,创建一个 config/
文件夹,在 config/
文件夹下创建三个文件:config.py
,production.py
,development.py
。
config
├── config.py
├── development.py
└── production.py
config.py 的内容如下:
import os
if os.getenv("FLASK_ENV") == "production":
from .production import *
else:
from .development import *
根据当前环境设置的 FLASK_ENV
是否为 production
来判断并选择加载对应的变量文件。
在 app/__init__.py
中还是正常加载 app.config.config
即可:
app.config.from_object("app.config.config")