Flask框架基础二

Flask框架基础二

1.url路径参数获取

解析:把请求路径中最后一个<> 之间的字符串当做参数.
格式:
@app.route(’/<user_id>’)
def index(user_id):
return ‘user_id is {}’.format(user_id)

2.系统常用的转换器

常用转换器:
(1)string (默认)
格式: string:param
(2)int 整数类型的转换器
格式: int:param
(3)float 浮点类型转换器
格式: float:param
转换器的作用:
1.获取参数
2.转换类型
3.过滤掉不符合规则请求

在这里插入图片描述

3.自定义转换器

原因:当系统的转换器不能满足我们的需求,需要自定义转换器
需求:手机号码
步骤:
1.编写自己的转换器类,继承BaseConverter
class MobileConverter(BaseConverter)
2.重写regex类属性
regex = r’1[3-9]\d{9}’
3.把自定义转换器添加到转换器字典中
app.url_map.converters[‘mobile’] = MobileConverter
4.使用
@app.route(’/mobile:phone’)
小结:
灵活使用转换器,可以过滤大部分不符合规则请求。

在这里插入图片描述

4.使用request对象获取参数

解析:除了上面那种获取url参数之外,客户端传来的参数,都封装在request对象中
request属性:
①args 获取查询字符串参数
②form 获取表单数据
③data 获取原始数据
④url 获取请求路径
⑤method 获取请求方式
⑥headers 获取请求头
⑦files 获取文件
⑧cookies 获取cookie
小结:
所有的业务基本都是从获取参数开始,所以一定要熟练使用request对象

在这里插入图片描述

在这里插入图片描述

5.返回响应

在flask中,返回结果有两种方式

方式1:

return 'ok.'

方式2:

构建响应对象
response = make_response('ok.')
返回响应对象
return response

在这里插入图片描述

6.返回自定义状态码和头部(如上)

原因:返回指定的状态码和头部,是做web开发一定会遇到的问题
有两种方式

1.返回元组,返回多个值

	return 'index', 404, {'token': 'laowang'}

2.使用response设置

response = make_response('index')
response.status_code = 405
response.headers['name'] = 'laoli'
return response

小结:
返回元组的方式,本质就是构建响应对象,只不过是flask替我们做了。

7.返回json数据

解析: json数据本质就是一个字符串, 除了返回json数据, 还要设置一下Content-Type.

1.使用json模块

return json.dumps(data), 200, {'Content-Type': 'application/json'}

2.使用jsonify

return jsonify(data)
return jsonify(name='laowang', age=18)

建议:
尽量使用jsonify

在这里插入图片描述

8.返回jinja2模板

解析:在Flask中,直接使用render_template返回模板
使用:

1.创建模板templates 文件夹(一定要将模板文件放在此文件夹中进行渲染,否则会报错!)

	index.html

2.使用render_template渲染模板, 同时可以在后面追加参数.

	return render_template('index.html', name='laowang', age=18)

备注:
1.状态码和头部的设置, 跟普通的响应一样.
2.render_template函数本质是渲染模板, 返回一个字符串

在这里插入图片描述


在这里插入图片描述

9.cookie使用

作用: 使用cookie做状态保持
使用:

1.使用response设置cookie

	max_age: cookie的有效期时间
	response.set_cookie(key, value, max_age)
	return response

2.获取cookie

	name = request.cookies.get('name')

3.删除cookie

	response.delete_cookie(key)

原理:
设置响应头set-cookie,浏览器就会自动保存cookie
删除原理:
设置一个过期的时间

在这里插入图片描述

10.session使用

解析:在flask中,获取和设置session数据,都是使用session对象
使用方式:

1.设置secret key

app.config['SECRET_KEY'] = '123456'
# or
app.secret_key = '123456'
# or
app.config.update(SECRET_KEY='123456')

注意:一定要设置secret key,否则会报错:the session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret!

2.设置session

	session[key] = value

3.获取session

	session[key]
	session.get(key)

小结:
在Flask中,session的数据是存放在浏览器中。称为浏览器session。
这样做的好处:减轻服务器的压力

在这里插入图片描述

11.abort的使用

作用: 抛出异常http状态码. 4XX 5XX
使用格式:
abort(http错误状态码)

12.异常捕获处理

场景:统一返回404不存在的页面。
使用格式:
@app.errorhandler(404)
def func_404(e):
return “这是一个漂亮的404页面”, 404
小结:
errorhandler除了可以捕获http错误状态码,还可以捕获0除错误等。
一般abort和异常捕获配合使用。

在这里插入图片描述

13.请求钩子的使用

作用:
准备和扫尾的工作。
Flask中请求钩子

1.在所有请求开始前执行一次

	before_first_request

2.在before_first_request后,其他请求开始前执行(常用)

	before_request

3.在所有请求视图执行后执行 (常用)

	after_request

4.在after_request后执行

	teardown_request

重点:
了解执行顺序

在这里插入图片描述


在这里插入图片描述

14.flask中的上下文对象

作用(重点):

①current_app: 指向处理当前请求的app对象,一般用在视图函数里获取配置信息

②g: 临时的全局变量,一般用于函数、钩子之间参数的传递

③request: 获取客户端参数

④session: 获取session数据

他们分成两种上下文对象

1.请求上下文对象

	request, session

2.应用上下文对象

	current_app, g

特点(难点):
在请求上下文,4个上下文对象都可用
在应用上下文中,current_app和g可用,request和session不可用

在这里插入图片描述

15.上下文对象

# 上下文管理类
class MyFile(object):
    def __init__(self, filename):
        self.file_obj = open(filename)
    def __enter__(self):
        return self.file_obj

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.file_obj.close()

小结:
在Flask中就是使用上下文管理类技术,管理4个上下文对象

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐