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了。

你可能感兴趣的:(python,java,session,编程语言,spring)