flask 入口文件中要注意的事项
flask中 的路由方式有两种
一.
@app.route(‘/hello/‘) # /hello 后面 / 可使 /hello 重定向到 /hello/
二.
app.add_url_rule(‘/hello‘,view_func=hello) 路由方式一 也就是对 add_url_rule的封装 源码中也做了相应的注解
同时也是 基于类的视图, 即插视图
app.run() 中参数的作用
debug=True时 只能通过 127.0.0.1 或 localhost 访问 debug 模式不可用在生产环境***
host=‘0.0.0.0‘ 时 外网可以访问
port=‘ **‘ 端口号自定义
配置文件 config
配置文件导入的两种方式
1. 导入包的形式,类似于模块导入
from config import 配置参数
调用方式 直接使用
2. app.config.from_object(‘config‘) 参数接受一个模块的路径,
调用方式 app.config[‘配置参数‘]
此种调用方式有两个陷阱:
当 config.py的配置中 Debug=True时
app.config[‘Debug‘] 会报错 报错提示为 找不到常量
解: 在flask中 app.config.from_object() 会自动忽略 小写及大小写混合的参数,也就是只接受全大写的参数,自动将 Debug 常量忽略
app.config[‘DEBUG‘] 不会报错
自动认为 DEBUG != Debug ,不会报错的原因是 DEBUG模式 默认为 False,启动的 flask模式也就是 debug=False 模式
if __name__ == ‘__main__‘:真正的作用
生产环境中 例如 nginx + uwsgi 是找不到 flask的入口文件的
if....... 里的代码就是定义了 入口文件,且 if 语句里的代码只在入口文件中执行
视图函数
# mvc 里的 控制器 就是 视图函数
@app.route(‘/hello‘) # 兼容 用户 在访问时兼容访问
def hello():
# 基于类的视图 (即插视图)
‘‘‘视图函数比较关注的 几点 respons 对象中
status code 200,404,301
content-type http headers http请求中的 头文件
content-type = text/html
默认为 text/html形式, text/plain文本格式 , appcaltion/json是 返回 json格式的 方式
‘‘‘
headers = {
‘content-type‘ : ‘text/plain‘,
‘location‘: ‘http://www.baidu.com‘
}
# response = make_response(‘<htmxl></html>‘,301) # 创建 response对象
# response.headers = headers
# return response # response 返回的 第一种方式
return ‘<html></html‘, 301, headers # response的 第二种方式 flask 用到最多, 实质是元组 flask最终转换为 第一种的 response的 对象