加载配置文件和flask项目启动

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对应的数据对应的列表数据即可。

你可能感兴趣的:(flask,python,后端)