Flask请求
Request请求对象
Request请求对象封装了从客户端发来的请求报文,可以从其中获取请求报文中的所有数据。请求解析和响应封装实际上大部分是由Werk架ug完成的,Flask子类化Werkage的请求(Requestion)和响应(Response)对象,并添加了和程序相关的特定功能。
request.args.get()
该方法可以获取GET请求的参数。
如
127.0.0.0:5000/?name=andy&age=18
#注意:以?开始,&来连接不同的信息
可以的到其中的name 和age
获取表单提交的信息
代码:
from flask import Flask,request,render_template
app = Flask(__name__)
@app.route('/login1',methods =['GET','POST'])
#
def login1():
#获取提交方式
if request.method =='POST':
username = request.form['username']
password = request.form['password']
message = f':{username} {password}'
return message
return render_template('login1.html')
if __name__ == '__main__':
app.run(debug = True)
- 注意:路由
‘/login1’
和视图函数login1
以及渲染模板中的模板名login1.html
要一致。
请求钩子
有时需要对请求进行预处理(pre processing)和后处理(posprocessing),这时可以使用Flask提供的请求钩子(Hook),以注册在请求处理的不同阶段执行的处理函数(或称为回调函数,即Callback)。
Flask的请求钩子指的是在执行视图函数前后执行的一些函数,用户可以在这些函数里面做一些操作。Flask利用装饰器提供了4种钩子函数。
-
before_first_request:
在处理第一个请求前执行。
-
before_request:
在每次请求前执行。
-
after_request:
每次请求之后调用,前提是没有异常。
-
teardown_request:
每次请求之后调用,即使有异常。
@app.before_first_request
def before_first_request():
print('before_first_request')
Flask响应
当在浏览器中输入一个网址时,Flask会先判断是否可以找到与请求URL相匹配的路由,如果没有则返回404响应。如果找到,则调用相应的视图函数。
视图函数的返回值构成了响应报文的主体内容。当请求成功时,返回状态码默认为200。
视图函数可以返回最多由3个元素组成的元组**;响应主体、状态码和首部字段。**其中,首部字段可以为字典,或是两元素元组组成的列表。
例如,最常见的响应可以只包含主体内容,示例代码如下:
@app.route('/index')
def index():
json 数据格式
一般使用jsonify()函数
from flask import Flask,jsonify
@app.route('/index')
def index():
return jsonify(name ="小米",age ="18")
Cookie 和 Session
Cookie 对象
Cookie指Web服务器为了存储某些数据(如用户信息)而保存在浏览器上的小型文本数据。浏览器会在一定时间内保存它,并在下一次向同一个服务器发送请求时附带这些数据。Cooks通常被用来进行用户会话管理。
简单来说,就是存储临时数据
在Flask中利用Response
类提供的set_cookie()
方法
如:(省略了其余部分)
#导入创建Response`的库
from flask import make_response
#获取response对象
response = make_response(('登录成功'))
#将用户名写入Cookie
response.set_cookie('username',username)
return response
- 如果没有设置Cookie的过期时间,则在关闭浏览器时会自动清除
- 清除Cookie
#设置过期时间为0,表示清除
response.set_cookie('username',",expires = 0)
Session对象
通俗理解,Session对象
是对Cookie
数据进行加密存储。
设置密钥的方法
-
app.secret_key = '密钥’
,密钥有自己写为字符串
app.config['SECRET_KEY'] ='密钥'
使用方法
session['login_in'] = True
.Session
是一个字典对象,使用上诉方法设置后,就可以根据其对应的真假来判断
if session.get('login_in'):
session.pop('login_in')
自定义错误页面
from flask import Flask ,request ,render_template
app = Flask(__name__) # 实例化Flask类
app.secret_key = "mrsoft" # 设置secret_key
@app.route("/")
def index():
'''首页'''
return render_template('index.html')
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html'), 404
if __name__ == "__main__":
app.run(debug=True) # 运行程序
其中404.html
就是我们自己定义的错误界面了