Python Web开发 - 制作flash变量

flash变量就是闪存,一次性变量。用户为其赋值,在任意时刻使用之后,变量就会自动消失。适合在web开发中作为“错误提示”等使用。

知道原理了实际上就很好写程序了,flash变量核心其实就是:在获取值之后就删除之。

由于flash变量可能有多个,所以我可以用一个类似字典的类来保存,那么我就直接编写一个子类基础dict就好了。

flash变量应该是一个全局变量,所以需要保存为python全局变量或session中,我这里就保存在session里。

简单实现了这样的一个类:

class flash(dict):
   def __init__(self, request):
      dict.__init__(self)
      self.request = request

   def __getitem__(self, item):
      item = "flash_%s" % item
      if item in self.request.session:
         value = self.request.session.get(item)
         self.request.session.delete(item)
      else:
         value = ""
      return value

   def get(self, k, d = None):
      return self.__getitem__(k)

   def __delattr__(self, item):
      item = "flash_%s" % item
      self.request.session.delete(item)

   def __setitem__(self, key, value):
      key = "flash_%s" % key
      self.request.session[key] = value

重写dict类的__getitem__方法,从session中获取了值后,就删除它。

重写__setitem__,将值保存在session中。

重写__delattr__,删除session。

基本就完全继承并重写了dict的大部分功能,原本的dict类已经消失了。

使用时,就直接把flash变量当做一个普通的dict去用就OK了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值