Flask的hello程序
默认标题让我找半天,生气:(
1 hello程序
创建 Python 项目
在Pycharm创建.py文件后,需要指定之前的虚拟环境。
在指定虚拟环境下,输入 which python获得虚拟环境地址。help(‘module’) 查询模块 python环境下的指令
导入Flask类
from flask import Flask
创建实例对象app
app = Flask(__name__)
新建路由映射
装饰器的作用是将路由映射到视图函数 index
@app.route('/')
def index():
return 'Hello World'
启动 WEB 服务器
if __name__ == '__main__':
app.run()
可以指定运行的主机IP地址,端口,是否开启调试模式
app.run(host="0.0.0.0", port=5000, debug = True)
打印路由url_map
程序实例中会使用 url_map 将装饰器路由和视图的对应关系保存起来
Map([<Rule ‘/’ (OPTIONS, GET, HEAD) -> index>,
<Rule ‘/static/’ (OPTIONS, GET, HEAD) -> static>])
2 配置参数
初始化参数
- import_name
__name__参数的作用:确认程序实例文件所在的位置。
1、必须要传入参数,且必须是字符串
2、其他会影响视图函数的访问
Flask程序所在的包(模块),传 __name__就可以
其可以决定 Flask 在访问静态文件时查找的路径 - static_path 不推荐使用
- static_url_path 静态文件访问路径,可以不传
- static_folder 默认为 static,静态文件路径
- template_folder 默认为 templates,模板文件路径
程序加载配置
在 Flask 程序运行的时候,可以给 Flask 设置相关配置,比如:配置 Debug 模式,配置数据库连接地址等等,设置 Flask 配置有以下三种方式:
- 从配置对象中加载(常用)
app.config.from_object()
从配置文件中加载
app.config.from_pyfile()
从环境变量中加载(了解)
app.config.from_envvar()
设置应用程序的 DEBUG(调试模式) ,可以实现:
程序代码修改后可以自动重启服务器
在服务器出现相关错误的时候可以直接将错误信息进行抛出到控制台打印
a 配置对象
从配置对象中加载,创建配置的类,代码如下:
#配置对象,里面定义需要给 APP 添加的一系列配置
class Config(object):
DEBUG = True
#创建 Flask 类的对象,指向程序所在的包的名称
app = Flask(__name__)
#从配置对象中加载配置
app.config.from_object(Config)
b 配置文件
创建配置文件 config.ini,在配置文件中添加配置
使用代码去加载配置
#创建 Flask 类的对象,指向程序所在的包的名称
app = Flask(__name__)
#从配置文件中加载配置
app.config.from_pyfile('config.ini')
c 环境变量(了解)
编辑运行的相关配置,使用代码去加载配置
创建 Flask 类的对象,指向程序所在的包的名称
app = Flask(__name__)
加载指定环境变量名称所对应的相关配置
app.config.from_envvar('FLASKCONFIG')
读取配置
app.config.get()
在视图函数中使用 current_app.config.get()
注:Flask 应用程序将一些常用的配置设置成了应用程序对象的属性,也可以通过属性直接设置/获取某些配置:app.debug = True
hello程序
from flask import Flask
app = Flask(__name__)
# 定义路由url地址
# endpoint:表示视图函数名的字符串形式。
# 不使用装饰器也可以实现路由映射。
@app.route('/abc',methods=['POST','GET'])
def hello2018():
# return 可以返回状态码,也可以返回不符合http协议的状态码,用来实现前后端的数据交互
return 'hello world2018',666
# self.add_url_rule(rule, endpoint, f, **options)
# 通过程序实例调用添加url规则,也可以实现路由映射。
# app.add_url_rule('/123','hello2018',hello2018)
# 结论:
# 1、视图函数不能重名。
# 2、url可以重复,不同的http请求方法,是对应不同的操作
# get查询、post插入、put修改、delete删除
# __name__表示当前模块名,如果被导入文件的时候__name__表示文件名
if __name__ == '__main__':
print(app.url_map)
# 启动服务器
app.run(debug=True)
加载配置信息示例
# 基本配置类
class Config:
DEBUG = None
# 开发模式配置
class DevelopmentConfig(Config):
DEBUG = True
# 生产模式配置
class ProductionConfig(Config):
DEBUG = False
# 定义字典,实现配置类的映射
config_dict = {
'dev':DevelopmentConfig,
'pro':ProductionConfig
}
from flask import Flask
# 导入配置类
# from config import Config
from config import config_dict
app = Flask(__name__)
# 加载配置文件:三种实现形式
# 1、加载配置对象,config是flask内置的配置对象
# app.config.from_object(Config)
# app.config.from_object(config_dict['pro'])
# 2、加载配置文件
# app.config.from_pyfile('config.ini')
# 3、加载环境变量
# app.config.from_envvar('SET')
@app.route('/')
def index():
return 'hello world'
if __name__ == '__main__':
app.run()