Flask基础知识掌握(3)

一、前言

本文是基于阅读Flask 1.0.2中文文档,记录自己的实践。主要内容时摘抄文档,仅作为个人的学习笔记。

二、操作请求数据

对客户端向服务器发送的数据(请求)作出响应是web的重要部分。

在Flask中,请求信息由request全局对象提供。(由于是本地环境,所以request虽是全局,但同时能保持线程安全)

每产生一个请求,都有一个当前环境(即我们所说的Context)

(1)要使用Flask中request对象,需要先导入;

(2)通过method属性可以操作当前的请求方法;

(3)通过form属性处理表单数据(在POST或POST请求中传输数据);

(4)当form属性中不存在这个键会引发一个KeyError,若没有捕捉该错误,则会显示HTTP 400错误页面。

如何使用请求中拼接的参数(例  xxxxx?key=value)?

通过使用args属性:例:request.args.get('key',")

三、文件上传

Flask处理文件的上传很简单,只要确保你的HTML表单中设置enctype="multipart/form-data"属性即可。(否则浏览器不会传送你的文件)

文件位置:已上传de的文件被存储在内存或文件系统的临时位置,可通过files属性来访问上传的文件。(在字典型属性中)

该files属性基本与python的file对象一致,但多出一个把文件保存到服务器的文件系统的save(保存的路径)方法。例子:

注意:文件上传之前,通过filename属性获取文件名称是不可靠的,是可伪造的。

四、Cookies

请求对象的cookies是一个包含了客户端传输的所有cookies的字典。

在Flask中,如果使用了会话,就不要直接使用cookise,会话相对较安全。

(1)cookies的读取(一般在请求上)

通过request对象的cookise属性的get(key)函数来获取指定的cookise,例:request.cookies.get('username')

(2)cookies的存储,即设置(一般在响应上)

作用:从视图函数返回字符串,Flask会把他们转换为响应对象。

显示转换的步骤:

1、make_response(render_template(.....))函数返回响应对象;

2、相应对象调用set_cookies('key','value')函数设置

注意:使用延迟的请求回调

五、会话(一种加密的cookies),即常说的session

session对象允许在不同请求之间存储信息,相当于用密钥签名加密的cookies,用户可查看cookies,但没有相应的密钥就wuwu无法修改。

注意:使用会话的前提是你必须设置一个密钥。

session['key'] 被赋值,则值被保存在session对象中,通过session的pop('key')可一移除session中保存的值。

一个快速生成密钥的方式:使用 os模块的urandom(位数)生成密钥。

六、重定向和错误

使用redirect()函数可以重定向,即重新指定函数的路由。

使用abort()函数可以终止请求,而让用户重定向到一个无法访问的页面是无意义的。

在错误中,每种错误码都会对应显示一个黑白的出错页面,我们可以使用errorhandler()装饰器定制错误页面。例:

@app.errorhandler(错误码)

def page_not_found(error)

      return render_template('page_not_found.html'),404

render_template()指定模版页面。而后面的404指页面对应的错误码。

七、响应

视图函数的返回值自动转换为一个响应对象。(返回值是字符串,会自动转换位包含的响应体字符串、错误码和text/htmllei的类型的响应对象。

转换规则:

1、返回的是响应对象,则直接返回该对象;

2、返回的是字符串,则根据字符串和缺省参数生成用于返回的响应对象;

3、返回的是元组(元组必须至少有一个项目,且该项目由response、status、header或response、header组成),status的值重载状态码,header是列表或字典(额外头部值)

4、以上都不是,Flask假定返回值是一个有效的WSGI应用并把它转换为一个响应对象。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值