Django中的flash message

本文介绍了在Django项目中实现消息提示的方法,包括利用Django自带的消息系统和使用FlashMessageTemplateTag的方式。前者适用于已登录用户,后者则更加灵活。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在做web系统的时候,我们需要针对一些操作的结果要进行提示信息给用户,如“××××保存成功!”,“××××出现错误!”。

 

在基于mvc的模型的框架下,我们可以采用flash message的方式。

 

以前在用web2py框架的时候,主要写:

response.flash = '订购%s成功'% foods[0].name

 

就会自动在上方提示response.flash的信息。

 

一.Django admin的提示信息

 

但是django没有flash,我们在使用django admin的时候,我们也看到了保存了一个对象成功后,会在列表的上方出现提示信息,这是如何做到的呢?

 

查看其源码,我么可以看到:

 request.user.message_set.create(message="Your playlist was added successfully.")

 

在template中增加如下代码:

 

{% if messages %}
    <ul class="messagelist">
        {% for message in messages %}
        <li>{{ message }}</li>
        {% endfor %}
    </ul>
{% endif %}

 

在设置一下messagelist央视,就达到了和django admin一样的提示信息效果。

 

但是这种提示信息,需要依赖request.user,如果没有进行登录,则无法实现。

具体查看django document:

http://docs.djangoproject.com/en/dev/topics/auth/#messages

 

二.Flash Message Template Tag

接下来我们使用Flash Message Template Tag来实现。

 

具体实现方式查看Flash Message Template Tag的文档。

 

http://www.djangosnippets.org/snippets/319/

 

注意:django最新版本中需要修改其中的一段代码:

原文中的57-58的代码修改如下:

 

if ret is not None:
        context.update(ret)
        return self.nodelist.render(context)
 

 

你可以将

 

>>>request.session['flash_msg'] = 'Your changes have been save'

>>>request.session['flash_params'] = {'type': 'success'}

封装的使用更友好一点如:

 

#coding=utf-8

def add_msg(request,msgtype,msg):
    request.session["flash_msg"] = msg
    request.session["flash_params"] = {'type': msgtype}

def add_success_msg(request,msg):
    add_msg(request,'success',msg)

def add_error_msg(request,msg):
    add_msg(request,'error',msg)

这样你就可以:

 

flash.add_success_msg(request,'保存成功!')
flash.add_error_msg(request,e.msg)
 

就可以实现了Flash Message.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值