知识点: 一、闪现 二、日志html
Flask提供了一个功能方便向前端反馈消息,这个功能叫闪现。闪现的功能是基于session实现,因此咱们在使用闪现的时候须要配置secret_key。前端
咱们用一个上传图片的例子来实现闪现,当咱们上传图片成功后,给前端反馈一个消息。python
from flask import Flask, render_template, flash, request, url_for, redirect
import os
app = Flask(__name__)
app.config["SECRET_KEY"] = "python is good"
UPLOAD_FOLDER = os.path.join(os.getcwd(), 'media') # 图片上传路径 = 当前工做目录+media文件夹
@app.route('/')
def index():
return render_template('upload.html')
@app.route('/upload', methods=['GET', 'POST']) # 支持get、post请求
def upload(): # 视图函数
file = request.files.get('file') # files获取多媒体资源
filename = file.filename
file.save(os.path.join(UPLOAD_FOLDER, filename)) # 保存
flash('上传成功') # 添加闪现信息
return redirect(url_for('index'))
if __name__ == '__main__':
# 0.0.0.0表明任何能表明这台机器的地址均可以访问
app.run(host='0.0.0.0', port=5000, debug=True) # 运行程序
复制代码
前端代码数据库
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{#获取闪现#}
{% for msg in get_flashed_messages() %}
<h1>{{ msg }}</h1>
{% endfor %}
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
</body>
</html>
复制代码
选择一张图片,点击上传: flask
咱们能够针对不一样的场景,提供不一样的分类。从而达到不一样的反馈消息的样式不一样。 添加闪现消息的时候加个分类:浏览器
flash('上传成功', 'success') # 添加闪现信息
复制代码
前端获取的时候能够获取分类:session
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{#获取闪现#}
{% for msg in get_flashed_messages(category_filter=['success']) %}
<h1 style="color: green">{{ msg }}</h1>
{% endfor %}
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
</body>
</html>
复制代码
咱们在浏览器调试一下: app
ERROR:这个级别的日志意味着系统中发生了很是严重的问题,必须有人立刻处理,好比数据库不可用了,系统的关键业务流程走不下去了等等。不少人在实际开发的时候,不会去区分问题的重要程度,只要有问题就error记录下来,其实这样是很是不负责任的,由于对于成熟的系统,都会有一套完整的报错机制,那这个错误信息何时须要发出来,不少都是依据单位时间内error日志的数量来肯定的。所以若是咱们不分轻重缓急,一概error对待,就会徒增报错的频率,长此以往,咱们的救火队员对错误警报就不会那么在乎,这个警报也就失去了原始的意义。函数
WARN:发生这个级别的问题时,处理过程能够继续,但必需要对这个问题给予额外的关注。假设咱们如今有一个系统,但愿用户每个月更换一次密码,而到期后,若是用户没有更新密码咱们还要让用户能够继续登陆,这种状况下,咱们在记录日志时就须要使用WARN级别了,也就是容许这种状况存在,但必须及时作跟踪检查。post
INFO:这个级别的日志咱们用的也是比较多,它通常的使用场景是重要的业务处理已经结束,咱们经过这些INFO级别的日志信息,能够很快的了解应用正在作什么。咱们以在12306上买火车票为例,对每一张票对应一个INFO信息描述“[who] booked ticket from [where] to [where]”。
DEBUG和TRACE:咱们把这两个级别放在一块儿说,是应为这两个级别的日志是只限于开发人员使用的,用来在开发过程当中进行调试,可是其实咱们有时候很难将DEBUG和TRACE区分开来,通常状况下,咱们使用DEBUG足以。
app.logger.debug('A value for debugging')
app.logger.warning('A warning occurred (%d apples)', 42)
app.logger.error('An error occurred')
复制代码
如,放在咱们上面的代码中,咱们但愿在上传成功以后,把这条信息记录一下:
app.logger.info(filename + '上传成功了.....')
复制代码
欢迎关注个人公众号: