Flask:参数说明
一、第一个flask程序
from flask import Flask @app.route('/') def index(): return 'Hello World!' if __name__ == '__main__': app.run()
启动运行
-
手动运行
python helloworld.py
-
编译器运行
像正常运行普通python程序一样即可。
二、Flask的参数说明
2.1 初始化参数
''' Flask对象的初始化参数: 第一个参数: import_name : 必填,一般填__name__,表示本模块是主模块,上一级目录就是项目目录 第二个参数: static_url_path: 选填, 静态文件访问路径, 类似取别名来访问静态文件 第三个参数: static_folder: 选填, 静态文件存储的文件夹, 默认是static 第四个参数: template_folder: 选填, 模板文件存储的文件夹, '''
from flask import Flask app = Flask(__name__) # -> Flask(模块名 字符串类型)。静态文件夹名默认为static,模板文件夹名默认是template # app = Flask(__name__, static_url_path='/s') # url中允许通过/s访问到static文件,限制:文件名必须是static # app = Flask(__name__, static_url_path='/s',static_folder='static_files') # 告诉Flask静态文件放在static_files文件夹中 # app = Flask(__name__, static_url_path='/s',static_folder='static_files',template_folder='template_files')# 告诉Flask模板放在template_files文件夹中 @app.route('/') def index(): return 'Hello World!' if __name__ == '__main__': app.run()
2.2 工程配置参数
''' Flase应用程序的配置参数: 数据库的连接信息: 日志的配置信息: 自定义的配置信息: ...... 三个方式获取配置信息: 1. 从配置对象中获取(需要创建类) 优点 ---> 可以继承服用 缺点 ---> 敏感数据暴露 应用场景 ---> 作为默认配置写在程序中 2. 从配置文件中获取 优点 ---> 独立文件,保护敏感数据 缺点 ---> 不能继承,文件路径固定 不灵活 应用场景 ---> 不考虑文件灵活性,只考虑数据的敏感性 3. 从环境变量中获取 优点 ---> 独立文件,保护敏感数据,文件路径不固定,灵活 缺点 ---> 不方便,要记得设置环境变量 应用场景 ---> 配置文件的地址不固定,在代码中不想暴露真实的配置文件地址,只在运行代码的服务器上才有真实配置文件的信息。 在项目中经常是多种方式搭配着使用,常用的方式是使用配置对象加载默认配置,使用环境变量加载不想出现在代码中的敏感信息。 '''
from flask import Flask # # 方式一:从配置对象加载配置信息:需要创建一个配置类,类属性就是配置信息 # class DefaultConfig(object): # """ # 默认配置 # 所有的配置项都要大写 # """ # SECRET_KEY = 'xxxxxxx' # app = Flask(__name__) # -> Flask(模块名 字符串类型)。 # app.config.from_object(DefaultConfig) # @app.route('/') # def index(): # # 读取配置信息 # print(app.config['SECRET_KEY']) # return 'Hello World!' # # 方式二:从配置文件中读取 # app = Flask(__name__) # -> Flask(模块名 字符串类型)。 # app.config.from_pyfile('setting.py') # @app.route('/') # def index(): # # 读取配置信息 # print(app.config['SECRET_KEY']) # return 'Hello World!' # 方式三:从环境变量中获取配置信息 app = Flask(__name__) # -> Flask(模块名 字符串类型)。 # 3.1.从终端启动,创建环境变量,注意:创建的变量仅在本终端有效,若是使用pycharm或者vscode启动,则没有这个环境变量,会报错 # 在终端输入export PROJECT_SETTING=setting.py,表示从环境变量PROJECT_SETTING指向setting.py文件夹 # 创建一个环境变量:export PROJECT_SETTING=setting.py # 回显一个环境变量: echo $PROJECT # 执行下面的语句,会获得环境变量对应的值,获得配置信息 # app.config.from_envvar('PROJECT_SETTING') # silent参数:表示环境变量没有设置时是否抛出异常。默认值为False # False:表示不安静处理,没有找到该环境变量时,抛出异常 # True: 表示安静的处理,没有找到该环境变量时,不抛出异常,正常执行下去 # app.config.from_envvar('PROJECT_SETTING_1', silent=False) # 抛出异常 app.config.from_envvar('PROJECT_SETTING_1', silent=True) # 不抛出异常 # 3.2. 从编辑器启动,在编辑器的图形化界面中手动添加环境变量 @app.route('/') def index(): # 读取配置信息 print(app.config['SECRET_KEY']) return 'Hello World!' if __name__ == '__main__': app.run()
2.2.1 工程参数的搭配使用
需要提前在全局定义好环境变量
export PROJECT_SETTING=~/Desktop/setting.py
from flask import Flask class DefaultConfig(object): SECRET_KEY = 'xxxxxxx' app = Flask(__name__) app.config.from_object(DefaultConfig) app.config.from_envvar('PROJECT_SETTING') @app.route('/') def index(): # 读取配置信息 print(app.config['SECRET_KEY']) return 'Hello World!' if __name__ == '__main__': app.run() 默认配置+环境变量配置
from flask import Flask class DefaultConfig(object): SECRET_KEY = 'xxxxxxx' def create_flask_app(config): # 构建flask对象的工厂函数 app = Flask(__name__) app.config.from_object(config) app.config.from_envvar('PROJECT_SETTING') return app app = create_flask_app(DefaultConfig) @app.route('/') def index(): # 读取配置信息 print(app.config['SECRET_KEY']) return 'Hello World!' if __name__ == '__main__': app.run() 封装后的代码
from flask import Flask class DefaultConfig(object): SECRET_KEY = 'xxxxxxx' class DevelopmentConfig(DefaultConfig): DEBUG = True def create_flask_app(config): # 构建flask对象的工厂函数 app = Flask(__name__) app.config.from_object(config) app.config.from_envvar('PROJECT_SETTING') return app app = create_flask_app(DevelopmentConfig) @app.route('/') def index(): # 读取配置信息 print(app.config['SECRET_KEY']) return 'Hello World!' if __name__ == '__main__': app.run() 继承+封装后的代码
2.3 app.run()参数
可以指定运行的主机IP地址,端口,是否开启调试模式
app.run(host="127.0.0.1", port=5000, debug = True)
关于DEBUG调试模式
- 程序代码修改后可以自动重启服务器
- 在服务器出现相关错误的时候可以直接将错误信息返回到前端进行展示

浙公网安备 33010602011771号