[09] [Flask 快速上手笔记] 08. 提示讯息与 Log 纪录

Log

Flask 使用标 Python 内建的 logging
所有与 Flask 相关的消息都用 app.logger 来记录,其名称与 app.name 相同

@app.route('/login', methods=['POST'])
def login():
    user = get_user(request.form['username'])

    if user.check_password(request.form['password']):
        login_user(user)
        app.logger.info('%s logged in successfully', user.username)
        return redirect(url_for('index'))
    else:
        app.logger.info('%s failed to log in', user.username)
        abort(401)

如果没有设定 log,在 python 中预设的 log 级别是warning
而低於设定级别的 log 内容是不可见的

可以参考文件:Flask logging

提示讯息

如果你没有前後端分离,而是需要自己使用模板撰写画面
可以透过flash()记录一条讯息,并只在下一个 request 可以存取

取得变数messages後就可以在模板内直接使用
并且因为 flashed messages 可以储存很多,所以可以用回圈方式一条一条列出

<!doctype html>
<title>My Application</title>
{% with messages = get_flashed_messages() %}
  {% if messages %}
    <ul class=flashes>
    {% for message in messages %}
      <li>{{ message }}</li>
    {% endfor %}
    </ul>
  {% endif %}
{% endwith %}

进而加强使用者体验
但若是这个讯息若是很多笔,比cookie还大的话则会失效!

参考文件:Message Flashing


<<:  C#入门之特殊字符

>>:  大共享时代系列_007_共享交通

30天轻松学会unity自制游戏-设定画面按钮

现在死亡後有了两个选项,一个重新开始游戏,一个是回到标题,目前只有一个场景,所以第一步快速制作一个开...

Day05-CRUD API 实作(五)Route 规划与 CRUD 实作(上)

大家好~ 今天要来开始实作留言的 CRUD 了! Route // 查询全部 messages Ro...

【Vue】2个步骤检测路由 | Path Ranker

Path Ranker 是一款检测 Vue Router 路由的工具,确认网址会进到正确的路由。 第...

【没钱买ps,PyQt自己写】Day 12 - 建立一个可以缩放图片大小的显示器 (基於 QImage 使用 OpenCV)

看完这篇文章你会得到的成果图 zoom in zoom out 前言 我们接下来的讨论,会基於读者已...

大共享时代系列_015_旅行进行式

啓程的原因? 关於让你出发去旅行的原因是什麽呢? 人际关系交流?家庭工作上的安排?个人的探索?还是其...