`
maplye
  • 浏览: 115935 次
  • 来自: ...
社区版块
存档分类
最新评论

Django中的flash message

阅读更多

在做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.

分享到:
评论

相关推荐

    Python库 | django_flash-1.6.1-py2.4.egg

    `django_flash`库的版本1.6.1-py2.4.egg是一个针对Python 2.4编译的压缩包,它使得在Django项目中优雅地管理“flash”消息变得轻而易举。在Web开发中,"flash"消息通常指的是那些在用户交互之间短暂显示的信息,如...

    使用Flex 4、Django、Python和PyAMF开发项目示例

    PyAMF是一个用于Python的AMF(Action Message Format)实现,AMF是一种二进制序列化格式,常用于Adobe Flex和Flash与服务器之间的数据交换。PyAMF使得Flex和Python之间可以高效地传输复杂数据结构,如自定义对象和数...

    php+flash实现转盘抽奖

    此外,随着技术的发展,虽然Flash已逐渐被淘汰,但本项目仍具有学习价值,可以借鉴其交互式设计思路,用现代Web技术如JavaScript(配合Canvas或SVG)和后端框架(如Node.js或Django)实现类似功能。 总结来说,...

    flex spring

    在Flex Spring的集成中,Spring主要作为服务层,提供RESTful API或者AMF(Action Message Format)接口,供Flex客户端调用,实现业务逻辑的处理。Spring的IoC(Inversion of Control)容器使得Flex客户端可以轻松地...

    Python库 | PyAMF-0.5-py2.5-linux-x86_64.egg

    它实现了AMF(Action Message Format)协议,这是一种高效的二进制序列化格式,广泛应用于Flash Player与服务器之间的通信,比如在Flex或AIR应用中。 **AMF简介** AMF是一种轻量级、高效的数据交换格式,它能够...

    python语言web之旅(python, mod_python, pyamf, flex, apache)

    PyAMF (Python Action Message Format) 是一个开源库,用于在Python和Adobe Flash之间进行数据交换。它实现了AMF(Action Message Format)协议,这是一种二进制序列化格式,常用于Flash/Flex应用与服务器间的通信。...

    Web开发-修改网站会员登录密码-Python源码示例.zip

    在Python中,处理Web应用通常涉及到使用Web框架,如Django、Flask等。这里我们可能用到的是Flask,因为它轻量级且适合快速构建小规模的Web应用。首先,我们需要创建一个数据库来存储用户信息,包括用户名和加密后的...

Global site tag (gtag.js) - Google Analytics