Flask-过滤消息闪现

来源:互联网 发布:app读书软件排行 编辑:程序博客网 时间:2024/04/29 16:16

在学习Flask时,狗书只讲解了最简单的闪现,即闪现内容只有一条,但实际过程中我们会根据不同的状况闪现不同的内容,这时就需要用到闪现的高级用法:

过滤闪现消息

举个栗子:创建便签时检查标签唯一性,若已存在则闪现‘名称已存在’,若没有则闪现‘添加标签成功’

以下是视图函数

@admin.route('/tag/add/',methods=['GET','POST'])@admin_login_reqdef tag_add():    form = Tagform()    if form.validate_on_submit():        data = form.data        tag = Tag.query.filter_by(name=data['name']).count() #检查标签是否已经存在(标签具有唯一性)        if tag == 1: #若存在,则提示并返回添加标签页            flash('名称已经存在!'),            return redirect(url_for('admin.tag_add'))        tag = Tag( #若不存在,则进行入库保存            name=data['name']        )        db.session.add(tag)        db.session.commit()        flash('添加标签成功!')        redirect(url_for('admin.tag_add'))    return render_template('admin/tag_add.html',form=form)

然后在HTML中输入

{% for msg in get_flashed_messages() %} <div class="alert alert-success alert-dismissible">    <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>    <h4><i class="icon fa fa-check"></i> 操作成功!</h4>        {{ msg }}</div>{% endfor %}{% for msg in get_flashed_messages() %} <div class="alert alert-danger alert-dismissible">    <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>    <h4><i class="icon fa fa-ban"></i> 操作失败</h4>        {{ msg }}</div>{% endfor %}

然后运行后显示
这里写图片描述
两个不同情况的闪现都出来了,因为视图函数未做分类,HTML中未做筛选
那么我们需要

  • 在视图函数重补充flash()函数的分类参数:
    flash('名称已经存在!', 'err'),
    flash('添加标签成功!', 'ok'),
  • 在HTML中补充{% for msg in get_flashed_messages() %}的筛选条件:
    {% for msg in get_flashed_messages(category_filter=['err']) %},
    {% for msg in get_flashed_messages(category_filter=['ok']) %}

这时,我们再运行,重复添加‘武侠’:
这里写图片描述
添加新标签:‘恐怖’:
这里写图片描述

成功!

原创粉丝点击