Python Web开发 - 制作flash变量

admin 2022年4月19日07:44:30评论71 views字数 890阅读2分58秒阅读模式

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 Web开发 - 制作flash变量

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月19日07:44:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Python Web开发 - 制作flash变量https://cn-sec.com/archives/514331.html

发表评论

匿名网友 填写信息