python前端学习-----Flask进阶

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数据进行加密存储。

设置密钥的方法

  1. app.secret_key = '密钥’ ,密钥有自己写为字符串
  2. app.config['SECRET_KEY'] ='密钥'

使用方法

  • 写入Session
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就是我们自己定义的错误界面了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落春只在无意间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值