Flask中flash的基本用法

框架部分

在需要返回弹出消息的位置使用flash:

from flask import flash
#flash使用格式
flash('需要闪现的消息')

需要给flash设定一个密钥(因为flash是保密内容,需要加密):

#密钥可以写在app = Flask(__name__)下面
#密钥给一个随机字符串
app.secret_key = 'test'

密钥不完成报错内容:RuntimeError: The session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret.

Html部分

在需要返回消息的html页面输入遍历函数(一般放在表单后):

{% for message in get_flashed_messages() %} {{ message }} {% endfor %}

报错与解决

报错1:可能会一定需要函数return一个值

报错内容:TypeError: The view function for 'do_log' did not return a valid response. The function either returned None or ended without a return statement.

原因:强制需要return一个值,但是偶发,有不需要输入return值的例子;目前不清楚原因;

#报错代码
@app.route('/log',methods=['POST','GET'])
def do_log():
    '''登录'''
    id=request.form['id']
    password=request.form['password']
    list=sjk.user_inqure(id) # 调用查询
    #此处为测试登录界面报错
    if list==0:
        flash('不存在此用户')

    elif list[1]==password:
        return render_template("index.html")

    else:
        return '请检测密码是否输入正确' 
#解决办法
@app.route('/log',methods=['POST','GET'])
def do_log():
    '''登录'''
    id=request.form['id']
    password=request.form['password']
    list=sjk.user_inqure(id) # 调用查询
    #加入一段return为原界面的代码
    if list==0:
        flash('不存在此用户')
        return render_template("login.html")

    elif list[1]==password:
        return render_template("index.html")

    else:
        return '请检测密码是否输入正确'

报错2:编码报错

报错内容:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)

Flask中flash的基本用法_第1张图片

原因:输入格式没有问题但编码错误,可能编码没有设置好,偶发

flash('需要闪现的消息')
#在消息前加上指定编码
flash(u'需要闪现的消息')

你可能感兴趣的:(flask,python,后端)