Python Web开发 - 制作flash变量

admin 2022年4月19日07:44:30安全开发评论12 views890字阅读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变量

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月19日07:44:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  Python Web开发 - 制作flash变量 https://cn-sec.com/archives/514331.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: