1. 加载配置文件的方式
A:从配置类中加载:app.config.from_object(DefaultConfig)
B:从配置文件中加载:app.config.from_pyfile(config.cfg)
C: app.config内部包含一个字典,可以直接将app.config当作字典来操作:app.config["key"]=value
D: 从环境变量中加载:app.config.from_envvar("环境变量名")
2.设计模式:解决固定问题的固定办法
A:设计模式的分类:
创建型:工厂设计模式是属于创建型的设计模式
结构型
行为型
B:工厂模式:根据用户传入的参数创建指定的对象
C:代码演示中的重点
1. abc(abstract base class)
2. ABCMeta:类的元类
3. abstractmethod:抽象方法,含有抽象方法的类一定是抽象类,抽象类不能实例化
4. eval(字符串):将字符串还原成原始类型
3. 创建app的封装:将创建app的工作封装到函数中,可以在创建对象后继续初始化其它配置
4. flask路由的定义:
@app.route(url, method=[....], endpoint="...")
def index():
pass
参数介绍:
- url: 路由路径
- method: 视图允许的请求方法, 如不指定method, 则默认只允许GET请求访问视图
- endpoint: 端点, 可以视为路由别名, 如果endpoint不指定, 则默认endpoint的值为视图函数名
- endpoint的作用:
-- 当请求传来一个url的时候,会先通过rule找到endpoint(通过app.url_map查看),然后再根据endpoint再找到对应的view_func
-- 在进行反向解析时有用,可以在不改变函数名的情况下通过endpoint获取访问的路由信息
5.路由映射的查看
A: 通过app.url_map查看路由映射表
B: 通过flask routes即可看到项目的路由表,前提是模块名必须是app.py,
如果当前主目录下没有app.py文件,则程序报错:Error: Could not locate a Flask application. You did not provide the "FLASK_APP" environment variable, and a "wsgi.py" or "app.py" module
was not found in the current directory.
如果想解决这个保存问题咋办?设置环境变量flask_app=要运行的脚本名,例如:set flask_app=app_demo02.py
6. 服务器的启动方式
A: app.run()
B:在flask1.0之后推荐我们使用flask run启动flask程序
# 终端启动步骤:
(1).指定启动实例: set FLASK_APP = 脚本名,
例如: set flask_app=flask_demo03.py
(2).指定启动模式: set FLASK_ENV = 'development'
注: development为开发模式, production为生产模式, 默认启动为生产模式
(3).启动命令详解: flask run -h ipaddress -p port
- flask run默认启动在127.0.0.1:5000上 ,
可以使用http://127.0.0.1:5000/index或者http://localhost:5000/index访问,
但是如果使用ip地址则访问失败,如果想通过IP地址访问成功则需要在启动flask程序时指定绑定的IP地址
打开命令行输入ipconfig即可查看本机所有的网络适配器信息,找到当前使用的IP地址
在终端中输入命令:flask run -h 192.168.1.115 来启动flask服务器,此时只能通过IP地址,比如:
http://192.168.1.115:5000/index访问成功,
但是使用http://127.0.0.1:5000/index和http://localhost:5000/index都访问失败,
如果想通过IP地址及本机回环IP地址127.0.0.1或者主机名localhsot都能访问成功,则需要将主机名绑定到
代表本机所有IP地址的0.0.0.0上,此时使用flask run -h 0.0.0.0运行flask服务器,即可使用本机所有的IP地址
都能访问成功
默认情况下flask服务器绑定的端口为5000,可以通过-p参数手工指定绑定的端口号,
端口号一般要大于1024,小于1024的端口大部分被系统占用了
http默认的端口号为:80
https默认端口号为:443
ftp协议默认端口为:21
smtp协议(发送邮件的协议)默认端口号为:25
pop3协议(接收邮件的协议)默认端口号为:110
telnet(远程登录协议)默认的端口号为:23
flask run -h 0.0.0.0 -p 8000
- 指定启动的盘IP使用-h参数, -p指定启动的端口
- 例如:flask run -h 0.0.0.0 -p 8000
1. 简述www工作原理?
浏览器向服务器发送请求,服务器第一步接受请求,第二步处理请求,第三步将处理结果封装成相应对象回传给浏览器,
其中请求对象的格式为:
请求行:请求的第一行,包括客户端提交提交方式 访问的目标地址 协议及其版本,例如: GET /index.html HTTP/1.1
请求头:从第二行开始到空行之间所有的key: value数据都为请求头数据
请求体:空行下面所有的内容
其中响应对象的格式:
状态行:响应的第一行,包括协议及其版本 响应码 响应码描述信息,例如: HTTP/1.1 200 OK
响应头:从第二行开始到空行之间所有的key: value形式的内容
响应体:空行下面所有的内容,浏览器通过解析这部分内容后在网页上显示最终结果给用户
2. 简述获取请求体中参数的过程?
客户端采用POST,PUT或者DELETE等带有请求体的客户端提交方式向服务器发送请求对象,服务器端通过request.form获取请求体中的数据,数据类型为ImmutableMultDict类型,
可以通过调用get(key)获取key对应的value值,如果有多个同名的key对应的value则可以调用getlist(key)方法获取同名的key对应的数据对应的列表数据即可。
3. 简述获取查询字符串中参数的过程?
客户端提交时在地址栏上带有查询字符串,比如http://wwww.baidu.com/index.html?id=100&name=admin等, 这里?后面的内容id=100&name=admin就是查询字符串,
服务器端通过request.args获取请求体中的数据,数据类型为ImmutableMultDict类型,
可以通过调用get(key)获取key对应的value值,如果有多个同名的key对应的value则可以调用getlist(key)方法获取同名的key对应的数据对应的列表数据即可。